Веб-хуки Twilio PHP?

У меня есть веб-хук в 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 дней ... Где я ошибаюсь?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
122
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если я не правильно понял ваш вопрос, прошу прощения. Я не понимаю, как у вас обстоят дела с настройками, что содержит ваш поток 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/5RVYH

Dean Harry 10.06.2019 01:50

Я пытаюсь получить ответ от этого виджета: вставить.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>" },

Dean Harry 10.06.2019 01:58

Я решил проблему, возвращаемые данные должны быть в формате JSON, а не XML, поэтому теперь нужно выяснить, как преобразовать их в JSON :)

Dean Harry 10.06.2019 04:30

Оказывается, мне просто нужно было преобразовать вывод в 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\\\"}\"" и впоследствии терпит неудачу. Я попытался заменить \\ на "" перед возвратом, но это ничего не изменило. Вы видели такое поведение раньше?

Dean Harry 10.06.2019 14:49

Это предположение, но я не думаю, что вам следует передавать XML в json_encode(), пытаться построить и массив, а затем передать его в json_encode().

Alex Baban 11.06.2019 01:28

интересно, если я верну закодированный вручную JSON следующим образом: header ('Content-Type:application/json'); return '{"Сообщение":"Спасибо, что приняли эту позицию.","От":"От Центра клиентов","Тело":"Здравствуйте"}'; Он по-прежнему отображается неправильно в Twilio, поэтому проблема не в json_encode. Я был взад и вперед с командой Twilio, и они так же сбиты с толку. Я попробовал это на 3 разных сайтах WordPress, теперь все с одним и тем же результатом ... довольно неприятно, возможно, WordPress где-то делает что-то странное?

Dean Harry 11.06.2019 01:45

Я могу попытаться вам помочь, но я плохо понимаю, как устроен весь процесс/приложение. Не могли бы вы обновить свой вопрос, предоставив как можно больше подробностей, особенно о потоке Studio (возможно, снимок экрана)?

Alex Baban 11.06.2019 03:26

Спасибо, Алекс, я мог бы отметить эту ветку как завершенную и создать новую ветку, поскольку фактическая проблема изменилась по сравнению с исходной проблемой.

Dean Harry 11.06.2019 05:04

Звучит хорошо, возможно, это нужно сделать с помощью функции Twilio, если виджетам Studio не нравятся данные, возвращаемые из WordPress.

Alex Baban 11.06.2019 06:16

Другие вопросы по теме