В этой реализации я пытаюсь выполнить исправление вызова между входящим вызовом и исходящим вызовом через Session.bridge () < /code> команда. В этом скрипте я пытаюсь исправить разводчик с номерами в number_list (список номеров) < /code> один за другим, пока список не будет исчерпан или до тех пор, пока вызов не будет исправлен и не ответил.for cp_num in connObj.cp_list:
ivr_log.debug("Attempting to dial Call Patch Number:%s"%(cp_num['cp_no']))
connObj.patch_uuid = uuid.uuid1()
cmd_str = """{ignore_early_media=true,execute_on_answer=record_session %s/%s_%s.wav,origination_uuid=%s,originate_timeout=45,script_name=gaadi_test}freetdm/wp4/a/%s"""%(connObj.recording_path,connObj.uuid,connObj.caller_id,connObj.patch_uuid,cp_num['cp_no'])
connObj.bridge(cmd_str) #BRIDGE
connObj.hangup_cause = connObj.getVar("last_bridge_hangup_cause")
if connObj.hangup_cause in ['NORMAL_CLEARING', '']:
connObj.cp_status = "SUCCESS"
return True
connObj.cp_status = "FAILED"
connObj.playback(connObj.path_sound + 'all_reps_busy.wav')
return False
< /code>
Несколько чисел в команде Bridge для последовательного набора.bridge [|]
< /code>
Моя реализация < /p>
cmd1 = """{ignore_early_media=true,originate_timeout=45}[origination_uuid=%s,script_name=gaadi_test]freetdm/wp4/a/%s"""%(connObj.patch_uuid1,connObj.cp_list[0]['cp_no'])
cmd2 = """[origination_uuid=%s,script_name=gaadi_test]freetdm/wp4/a/%s"""%(connObj.patch_uuid2,connObj.cp_list[1]['cp_no'])
cmd = "%s[|%s]"%(cmd3,cmd4)
ivr_log.debug("CMD=%s"%(cmd))
connObj.call_patch_start_time = int(time.time())
connObj.patch_start_datetime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
connObj.bridge(cmd)
< /code>
p.s.: connobj.bridge (cmd) идеально подходит только для одной целевой точки. Я не подтвердил, если для обоих вызовов будет отличаться. < /P>
cmd1 = """{ignore_early_media=true,originate_timeout=45,script_name=gaadi_test}[origination_uuid=%s]freetdm/wp4/a/%s"""%(connObj.patch_uuid1,connObj.cp_list[0]['cp_no'])
cmd2 = """[origination_uuid=%s]freetdm/wp4/a/%s"""%(connObj.patch_uuid2,connObj.cp_list[1]['cp_no'])
cmd="%s|%s" #removed the brackets and its working now.
connObj.bridge(cmd)
< /code>
edit: < /p>
Наконец -то я решил проблему с подходом Станислава. Я использовал api_on_answer. В ответе я написал файл на диске, а затем проверил, присутствовал ли файл или нет. Если файл присутствовал, то на звонок был ответ.
Подробнее здесь: https://stackoverflow.com/questions/339 ... ound-and-o
Freeswitch: Как определить, был ли ответ на звонок при перевороте входящего и исходящего звонка? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как получить номер входящего звонка с помощью API CallScreeningService
Anonymous » » в форуме Android - 0 Ответы
- 33 Просмотры
-
Последнее сообщение Anonymous
-