Twilio TwiML Bin не позволяет атрибуту CallerId быть динамическим

Я пытаюсь использовать шаблон усов TwiML для атрибута callerId в следующей корзине:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Dial callerId="+11234567890">
        <Number>{{to}}</Number>
    </Dial>
</Response>

Однако когда я делаю что-то вроде этого:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Dial callerId={{from}}>
        <Number>{{to}}</Number>
    </Dial>
</Response>

в сообщении говорится, что это недопустимый TwiML. Номер телефона в приложении будет меняться, поэтому мне нужно, чтобы это значение было динамическим. Как мне использовать здесь шаблон?

Кроме того, я пытался установить различные параметры через Java, например:

    public void makeCall() {
        if (accessToken != null) {
            params.put("To", toNumber);
            params.put("From", "11234567890");
            params.put("Caller", "11234567890");
            params.put("CallerId", "client:11234567890");
            ConnectOptions connectOptions = new ConnectOptions.Builder(accessToken)
                    .params(params)
                    .build();
            activeCall = Voice.connect(context, connectOptions, callListener);

        }

но безрезультатно, потому что сообщение на панели инструментов Twilio всегда сообщает:

Наберите: недопустимое значение callerId

Кроме того, в двух статьях, описывающих корзины, этот случай не рассматривается: ссылка и ссылка < / а>


person heiligbasil    schedule 22.01.2021    source источник


Ответы (1)


Попробуйте использовать заглавные буквы From и To. Это должно решить проблему.

person Alan    schedule 22.01.2021
comment
После перехода в нижний регистр он работал лучше, но, к сожалению, изменение регистра в атрибуте For, похоже, не имело никакого значения: все прописные, все строчные или титульный. Также я все еще в неведении относительно синтаксиса шаблона атрибута callerId ... - person heiligbasil; 22.01.2021
comment
CallerId должен быть номером телефона в формате E.164, если вы набираете номер в PSTN, что и делает Dial Number. От должен быть client: 11234567890, в зависимости от вашего кода, который недействителен для вызовов PSTN. - person Alan; 22.01.2021
comment
Это дало мне возможность попробовать больше комбинаций: client: 11234567890 и client: +11234567890 и +11234567890. Кажется, что проблема заключается в том, что я не знаю правильного синтаксиса для удаления атрибута callerId из корзины TwiML, показанной выше. Удаление его дает ошибку независимо от того, что говорит мой параметр Java. Должен быть способ справиться с этим ... - person heiligbasil; 22.01.2021
comment
Существует функция TwiML Bin, которую можно использовать для нормализации отправленного сообщения From, если оно не в формате E.164, ‹Dial› {{# e164}} {{From}} {{/ e164}} ‹/Dial›. То, что вы пытаетесь сделать, возможно на 100%. - person Alan; 22.01.2021
comment
Я ценю твою помощь, Алан, и думаю, ты прав - выход есть. То, что вы мне дали, похоже, частично помогает ... но всякий раз, когда я удаляю атрибут callerId и звоню, роботизированный голос говорит: Извините; произошла ошибка приложения. До свидания. И мне нужно, чтобы атрибут callerId изменялся в зависимости от того, с какого номера он вызывается. Я уверен, что кое-что упустил из виду. - person heiligbasil; 22.01.2021
comment
Вам нужно будет сопоставить идентификатор клиента Twilio, то есть client: xxx, с конкретным телефонным номером при выполнении вызова в PSTN (есть две ветви вызова: клиентская ветка к Twilio и ветвь Twilio к телефонной сети). Как вы видели, ваш TwiML устанавливает callerId, который вы можете передать со стороны клиента, какой номер E.164 для использования клиентом, twilio.com/docs/voice/, или выполните поиск на серверной части, чтобы сопоставить конкретную личность клиента с номером телефона и сгенерировать свой TwiML. - person Alan; 22.01.2021