У меня есть веб-хук в Twilio, использующий Studio, и большая его часть работает нормально вплоть до получения ответа от веб-сервера.
Глядя в журнал Twilio, я вижу, что ответ возвращается так:
"widgets": {
"ReplyWithJobDetail": {},
"AskServer": {
"status_code": 200,
"content_type": "text/xml",
"body": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Response><Message>Thank you for accepting this position.<From>From=MCC</From><Body>Body=Here is the body content</Body></Message></Response>"
},
Но я получаю сообщение об ошибке в Twilio:
Body:
Failure sending message: Message body is required.
Что странно, потому что тело явно там.
Мой вебхук:
function trigger_receive_sms($from) {
header ('Content-Type:text/xml');
echo ('<?xml version = "1.0" encoding = "UTF-8"?>');
echo ('<Response>');
echo ('<Message>Thank you for accepting this position.');
echo ('<From>From=MCC</From>');
echo ('<Body>Body=Here is the body content</Body>');
echo ('</Message>');
echo ('</Response>');
die();
}
Это в WordPress, а также установлен плагин Twilio.Core.
Я пытался заставить это работать в течение 4 дней ... Где я ошибаюсь?





Если я не правильно понял ваш вопрос, прошу прощения. Я не понимаю, как у вас обстоят дела с настройками, что содержит ваш поток Studio, что с WordPress и т.д...
Вот TwiML для ответа на входящее сообщение:
<Response>
<Message>Hello from Twilio!</Message>
</Response>
Нет необходимости в From, потому что оно будет отправлено с вашего номера Twilio, а body сообщения находится прямо между тегами <Messsage>, поэтому теги <Body> также не нужны.
Таким образом, попробуйте с:
function trigger_receive_sms($from) {
header ('Content-Type:text/xml');
echo ('<?xml version = "1.0" encoding = "UTF-8"?>');
echo ('<Response>');
echo ('<Message>Thank you for accepting this position.');
echo ('</Message>');
echo ('</Response>');
die();
}
Дайте нам знать, как это происходит. Если я ошибся, пожалуйста, дайте больше деталей, я постараюсь понять лучше.
Я пытаюсь получить ответ от этого виджета: вставить.pics/5RVYR Когда я смотрю на ответ в журналах Studio, я вижу, что он возвращает это: "widgets": { "ReplyWithJobDetail": {}, "AskServer": { "status_code" : 200, "content_type": "text/xml", "body": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Response><Message>Спасибо, что приняли это позиция.</Message></Response>" },
Я решил проблему, возвращаемые данные должны быть в формате JSON, а не XML, поэтому теперь нужно выяснить, как преобразовать их в JSON :)
Оказывается, мне просто нужно было преобразовать вывод в JSON...
Сделал это со следующим:
function trigger_receive_sms($from) {
header ('Content-Type:application/json');
$message = '<?xml version = "1.0" encoding = "UTF-8"?>';
$message .= '<Response>';
$message .= '<Message>Thank you for accepting this position.';
$message .= '</Message>';
$message .= '</Response>';
$simplexml = simplexml_load_string($message);
$json = json_encode($simplexml);
return $json;
die();
}
Привет, Алекс, оказывается, я еще не совсем там... какое-то странное поведение, когда JSON попадает в Twilio... когда я нажимаю свой веб-хук в браузере, это выглядит так: "{\"message\":\" Спасибо, что приняли эту позицию.\",\"from\":\"MCC\"}" Однако, когда он попал в Twilio, он выглядит так: "body": "\"{\\\"message\\\" :\\\"Спасибо, что приняли эту позицию.\\\",\\\"from\\\":\\\"MCC\\\"}\"" и впоследствии терпит неудачу. Я попытался заменить \\ на "" перед возвратом, но это ничего не изменило. Вы видели такое поведение раньше?
Это предположение, но я не думаю, что вам следует передавать XML в json_encode(), пытаться построить и массив, а затем передать его в json_encode().
интересно, если я верну закодированный вручную JSON следующим образом: header ('Content-Type:application/json'); return '{"Сообщение":"Спасибо, что приняли эту позицию.","От":"От Центра клиентов","Тело":"Здравствуйте"}'; Он по-прежнему отображается неправильно в Twilio, поэтому проблема не в json_encode. Я был взад и вперед с командой Twilio, и они так же сбиты с толку. Я попробовал это на 3 разных сайтах WordPress, теперь все с одним и тем же результатом ... довольно неприятно, возможно, WordPress где-то делает что-то странное?
Я могу попытаться вам помочь, но я плохо понимаю, как устроен весь процесс/приложение. Не могли бы вы обновить свой вопрос, предоставив как можно больше подробностей, особенно о потоке Studio (возможно, снимок экрана)?
Спасибо, Алекс, я мог бы отметить эту ветку как завершенную и создать новую ветку, поскольку фактическая проблема изменилась по сравнению с исходной проблемой.
Звучит хорошо, возможно, это нужно сделать с помощью функции Twilio, если виджетам Studio не нравятся данные, возвращаемые из WordPress.
Спасибо, Алекс, я пробовал это раньше, но все еще получаю сообщение «Требуется тело сообщения». Падающий виджет находится здесь: вставить.pics/5RVYH