def push_notification_by_call(voice, worker_phone_num):
"""
語音提醒
:param voice: 音頻文件
:param worker_phone_num: 用戶電話
:return:
"""
phone_num = str(worker_phone_num)
shap3 = ctypes.cdll.LoadLibrary("C:\Windows\SHP_A3.dll") # 加載動態鏈接庫
shap3.SsmStartCti(path.join(src, 'ShCti\ShConfig.ini\0'),
path.join(src, 'ShCti\ShIndex.ini\0')) # 初始化驅動
ch = shap3.SsmSearchIdleCallOutCh(1, 0) # 搜索空閑通道
ret_1 = shap3.SsmAddToFileList(ch, voice, -1, 0, -1) # 向驅動程序提交一個需要播放的語音文件
ret_2 = shap3.SsmSetPlayVolume(ch, 3) # 設置播放語音文件的聲音大小
ret_3 = shap3.SsmPickup(ch) # 通道摘機
# shap3.SsmSetCalleeHookDetectP(ch, 6, 48) # 增強的遠端摘機檢測器參數設置
# shap3.SsmStartPickupAnalyze(ch) # 啟動“增強的遠端摘機檢測器”
ret_4 = shap3.SsmSetWaitAutoDialAnswerTimeEx(ch, 25) # 設置一個通道等待被叫用戶摘機的最大等待時間
ret_5 = shap3.SsmAutoDial(ch, phone_num) # 撥打電話
start_time = time.time()
while True: # 實時查詢當前通道狀態(時間間隔0.1秒)
time.sleep(0.1)
# if shap3.SsmGetPickup(ch) == 1: # 判斷被叫用戶是否摘機
ret_7 = shap3.SsmGetChState(ch)
if shap3.SsmGetChState(ch) == 3:
shap3.SsmPlayFileList(ch) # 播放已添加的語音文件
if shap3.SsmGetChState(ch) == 7:
ret_6 = shap3.SsmGetPendingReason(ch)
if ret_6 == 0:
print "未檢測到撥號音, 請檢查是否插電話線"
# elif ret_6 == 4:
# print "通道在“連接”狀態時檢測到對端用戶掛機"
shap3.SsmStopPlayFileList(ch) # 停止播放語音文件
break
end_time = time.time()
max_time = end_time - start_time
if max_time >= 120: # 設置通話最大時長
break
shap3.SsmHangup(ch) # 通道掛斷
shap3.SsmClearFileList(ch) # 關閉并清除已提交給驅動程序的全部語音文件
shap3.SsmCloseCti() # 關閉驅動程序
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
