Как настроить голосовую почту с помощью Twiml Bins? - PullRequest
0 голосов
/ 10 апреля 2020

Я делаю быстрый PO C, используя Twiml Bins, я пытаюсь соединить 2 звонка, и если получатель не отвечает на звонок, он должен go ответить на его голосовую почту.

Вариант использования:

  1. Пользователь A вызывает мой номер twilio.
  2. Twilio переводит A в режим удержания и пытается позвонить B.
  3. Если B отвечает, B просят принять или отклонить звонок. Нажав 1 или 2 (или повесив трубку).
  4. Если принято, вызов соединяется, и A и B. разговаривают.
  5. В случае отклонения A может оставить голосовую почту для B в своей ячейке.
  6. Если B не отвечает, A может оставить голосовую почту для B на своей ячейке.

Я застрял на 5 и 6. Невозможно отправить голосовую почту на B если вызов отклонен или оставлен без ответа. Вложение тегов Twiml меня мало смущает. Вот что я попробовал до сих пор: PutAOnholdAndCallB:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Say>Thank you for calling please wait while I connect you.</Say>
  <Dial timeout="15" action="Callhangup">
        <Number url="AcceptorDeny">UserBPhoneNo
        </Number>
    </Dial>
</Response>

AcceptorDeny:

    <?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Gather numDigits="1" timeout="20" action="DoNothing">
    <Say>You have a call, press 1 to answer or hang-up for it to go to voicemail.</Say><Pause length="3"/><Say>Connecting</Say>
  </Gather>
  <Hangup/>
</Response>

Callhangup:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Say>
        You have reached the voicemail.
        Please leave a message at the beep. 
        Press the star key when finished. 
    </Say>

    <Record action="DoNothing"
        method="GET" 
        maxLength="20"
        finishOnKey="*"
    />
    <Hangup />
</Response>

DoNothing:

<?xml version="1.0" encoding="UTF-8"?>
<Response />

1 Ответ

0 голосов
/ 10 апреля 2020

Ваша задача состоит в том, что в корзинах TwiML нет уровня условной логики c, вам необходимо проанализировать результаты определенного вами URL действия набора номера . Вам необходимо оценить значение DialCallStatus , чтобы правильно направить вызов без ответа (или вызовы, когда набранный номер не нажимает номер для ответа на вызов).

В этих случаях без ответа , в которые вы хотите отправить вызов в логи голосовой почты TwiML Bin c, Callhangup, вы проверяете, есть ли DialCallStatus (из URL-адреса действия набора) = no-answer в противном случае вы зависаете или больше не возвращаете TwiML (так как набранный номер нажал клавишу для ответа на вызов, поэтому нет необходимости представлять голосовую почту вызывающему абоненту).

Лог c задокументировано в этой функции Twilio, Реализация голосовой почты .

Я бы предложил Twilio Studio справиться с этим, однако Studio в настоящее время не поддерживает функцию Number URL , которую вы использовал для шепота опцию набранному абоненту о возможности принять вызов.

Если вы использовали Studio, вам нужно будет заглянуть в TwiML Redirect Widget , чтобы добавить это Функциональность isper в вашу студию Flow. На прошлой неделе я видел блог, который делал то, что я написал выше, используя Studio (без шепота), Использование Twilio для создания системы переадресации вызовов и голосовых сообщений .

...