Я использую интерфейс twilio REST через колбу под python3.
Я использую метод dial
для маршрутизации входящих вызовов на другой номер (хранится в переменной target
) следующим образом:
resp = VoiceResponse()
resp.dial(
target,
action=url_for('callstatus'),
method='GET',
timeout=20
)
return Response(str(resp), 200, mimetype='application/xml')
Это работает без проблем, если целевой номер начинает звонить. Однако, если целевой номер занят, метод dial
не обнаруживает это и просто позволяет вызывающему абоненту слышать сигнал занятости до истечения времени ожидания.
Я бы хотел как-то сразу определить, что цель занята, а затем направить вызов на голосовую почту в этом случае.
Я знаю, как выполнить маршрутизацию на голосовую почту, но я не знаю, как сделать это автоматически при обнаружении сигнала занятости.
Есть ли способ сделать это через twilio REST API?
ОБНОВЛЕНИЕ: я попробовал следующее, и это не сработало ...
resp = VoiceResponse()
dial = Dial(
action=url_for('callstatus'),
method='GET',
timeout=20
)
dial.number(
target,
status_callback=url_for('callstatus'),
status_callback_event='initiated ringing answered completed',
status_callback_method='GET'
)
resp.append(dial)
return Response(str(resp), 200, mimetype='application/xml')
Когда я делаю это таким образом, я получаю сигнал занятости, и он продолжается вечно. Время ожидания в исходном объекте Dial
игнорируется.
ПРИМЕЧАНИЕ: я основал приведенный выше код на следующем примере в документации twilio для Number
...
response = VoiceResponse()
dial = Dial()
dial.number(
'+14158675310',
status_callback_event='initiated ringing answered completed',
status_callback='https://myapp.com/calls/events',
status_callback_method='POST'
)
response.append(dial)
print(response)
ДРУГОЕ ПРИМЕЧАНИЕ: status_callback
игнорируется в объекте number
. Если я закомментирую action
в объекте dial
, мой обратный вызов состояния никогда не будет вызван, даже если я вешаю трубку. И если я помещу action
обратно в объект dial
и закомментирую все атрибуты status_callback
в объекте number
, обратный вызов действия вызовет , когда я вызову повесить трубку. Это означает, что action
распознается, а status_callback
игнорируется.
... и я получаю точно такое же поведение, независимо от того, установлю ли я метод POST
или GET
.