Сбор Twilio Return после клиентской пресс-звездыPython

Программы на Python
Ответить
Anonymous
 Сбор Twilio Return после клиентской пресс-звезды

Сообщение Anonymous »

Я пытаюсь создать резервную встречу, если переводчик зависает на конференции, пока клиент все еще на линии, мне приходится вернуть встречу клиенту, чтобы спросить его, хочет ли он еще одного переводчика, или отключиться >
все работает идеально, но когда клиент нажал звездочку, собеседник произнес только первую часть слова, а затем звонок отключился

Код: Выделить всё

def handle_incoming_call(self, call_sid, from_number, language_code):
try:
with transaction.atomic():
next_interpreter = CallSelector.get_next_interpreter(language_code)

conference_name = f"conferenceـ{call_sid}"
conference = CallSelector.create_conference(
language=next_interpreter.language,
interpreter=next_interpreter.interpreter,
conference_name=conference_name,
)

response = VoiceResponse()
response.say("Please wait while we connect you with an interpreter")
dial = Dial(
hangup_on_star=True,
action=f"{settings.BASE_URL}/api/calls/webhook/interpreter_leave/{conference.conference_id}/",

)
dial.conference(
conference_name,
start_conference_on_enter=True,
end_conference_on_exit=False,
# record=True,
# recording_status_callback=f"{settings.BASE_URL}/api/calls/webhook/recording/{conference.conference_id}/",
status_callback=f"{settings.BASE_URL}/api/calls/webhook/conference-status/{conference.conference_id}/",
status_callback_event="start end join leave announcement",
status_callback_method="POST",
beep=True,
participant_label="client",
)
response.append(dial)

self._add_client_to_conference(conference, from_number, call_sid),
self._call_interpreter(conference, next_interpreter.interpreter),

return response
except Exception as e:
logger.error(f"Call handling failed: {str(e)}", exc_info=True)
return self._generate_no_interpreter_twiml()

А вот обратный вызов интерпретатор_leave

Код: Выделить всё

def handel_interpreter_leave(self, conference_id: str):
try:

print("Interpreter leave handling started")
conference = CallSelector.get_conference_by_conference_id(conference_id)
response = VoiceResponse()
gather = Gather(
num_digits=1,
action=f"{settings.BASE_URL}/api/calls/webhook/client_choice/{conference_id}/",
method="POST",
timeout=10,
input="dtmf",
)
gather.say("Press 1 to connect with a new interpreter, or press 2 to end the call.")
response.append(gather)
return response
except Exception as e:
logger.error(f"Interpreter leave handling failed: {str(e)}", exc_info=True)
raise
Перед вызовом Action у меня есть функция, вызываемая после выхода интерпретатора, чтобы сообщить клиенту нажать звездочку

Код: Выделить всё

def handle_interpreter_hangup(self, conference_id: str, sid: str):
try:
print("Interpreter hangup handling started")
conference = CallSelector.get_conference_by_conference_id(conference_id)
self.client.conferences.get(conference.conference_sid).update(
announce_url=f"{settings.BASE_URL}/api/calls/webhook/interpreter_leave_redirect/{conference_id}/"
)
except Exception as e:
logger.error(f"Interpreter hangup handling failed: {str(e)}", exc_info=True)
raise
все работает так, как ожидалось, но когда дело доходит до сбора twiml, появляется надпись «Нажмите 1, чтобы»
Также обратите внимание, когда attr time_limit добавлен в первый Dial(), сборка работает

Подробнее здесь: https://stackoverflow.com/questions/793 ... press-star
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»