Состояние обратного вызова Twilio для исходящего вызова всегда «завершено» - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь создать телефонное дерево IVR через REST API в Salesforce (Twilio API).Проблема в том, что я не могу поймать любой другой статус обратного вызова, кроме «завершен».

Если вызов был отменен или не было ответа на этот вызов, Twilio все равно отправляет ответ на вызов со статусом «завершено».

Более того, клиент получает голосовую почту с записанным приветственным сообщением и первым вопросом о телефонном дереве после неудачной попытки вызова.

Пример кода создания вызовов:

TwilioRestClient client = new TwilioRestClient(TwilioSID, TwilioToken);
Map<String,String> params = new Map<String, String>(); 

String webURL = webServerURL;

params.put('To', phone);  
params.put('From', phoneFrom);   
params.put('Url', webURL); 
params.put('Method', 'GET'); 
params.put('FallbackUrl', webURL);
params.put('FallbackMethod', 'GET');
params.put('StatusCallback', webURL);
if (!System.Test.isRunningTest()) {
    try {
        TwilioCall call = client.getAccount().getCalls().create(params);
    } catch(Exception ex) {
    }
}

Кроме того, я пытался добавить параметр StatusCallbackEvent (ссылка на документацию Twilio - https://www.twilio.com/docs/voice/twiml#callstatus-values):

params.put('StatusCallbackEvent', 'busy canceled completed failed no-answer');

// and other optiions like :
// params.put('StatusCallbackEvent', 'busy');
// params.put('StatusCallbackEvent', 'canceled');
// params.put('StatusCallbackEvent', 'completed');
// params.put('StatusCallbackEvent', 'failed');
// params.put('StatusCallbackEvent', 'no-answer');

Но не было никакой разницы в состоянии обратного вызова после неудачных вызовов.

Как мне делать вызовы, чтобы получить ответы на вызовы Twilio со всеми окончательными состояниями («занято», «не удалось »,« нет ответа »и т. д.)?

1 Ответ

0 голосов
/ 21 ноября 2018

Twilio developer evangelist здесь.

Если вы установите URL для StatusCallback, то по умолчанию вы будете получать обратные вызовы только тогда, когда вызов «завершен».Однако завершенный вызов может иметь разные причины для завершения, например «занято», «не удалось», «нет ответа» или просто «завершено», и вы можете прочитать это значение из параметра CallStatus, который отправляется на URL-адрес..

Вы можете подписаться на другие события, как вы и пытались.Единственное, что вы пытались подписаться на потенциальные статусы, а не на сами события.

Для звонка вы можете подписаться на «инициировано», «звонок», «ответ» и «завершено».Так что попробуйте:

params.put('StatusCallbackEvent', 'initiated ringing answered completed');
...