Как получить Webhook и отправить сообщение через Twillio с его данными

Я работаю над сайд-проектом для одного из моих клиентов, который отправит им текст (через Twilio), когда они получат новый чат в чате. Это вебхук (документы здесь) отправляет информацию о посетителях вместе с их ответами на предварительный опрос. Я могу отправить основное сообщение типа «Новый чат на вашем сайте!» но не любые переменные данные. Вот начало моего кода:

<?php
$data = file_get_contents('php://input');
$data = json_decode($data);

// this line loads the library
require './twilio/Services/Twilio.php';

$account_sid = $sid;
$auth_token = $token;
$client = new Services_Twilio($account_sid, $auth_token);

try {
$message = $client->account->messages->create(array(
"From" => "+12677932737",
"To" => "5555555555",
"Body" => $data,
));
} catch (Services_Twilio_RestException $e) {
$error = $e->getMessage();
}
?>

Спасибо!

0

Решение

Похоже, вы пытаетесь отправить весь $data как тело сообщения.

Согласно REST документы для Twilio, Body переменная может быть только 160 символов (нормальная длина SMS).

При просмотре ссылки, которую вы указали для веб-хуков LiveChat, вы можете получить несколько различных объектов данных:

Пример простой веб-ловушки при запуске чата:

{
"event_type": "chat_started",
"token": "27f41c8da685c81a890f9e5f8ce48387",
"license_id": "1025707"}

Чат начинается с информации о посетителе:

{
"event_type": "chat_started",
"token": "27f41c8da685c81a890f9e5f8ce48387",
"license_id": "1025707",
"visitor": {
"id": "S1354547427.0c151b0e1b",
"name": "John",
"email": "[email protected]"}
}

Веб-перехват сообщения чата:

"chat": {
"id":"MH022RD0K5",
"started_timestamp":1358937653,
"ended_timestamp":1358939109,
"messages":[
{
"user_type":"agent",
"author_name":"John Doe",
"agent_id":"[email protected]",
"text":"Hello",
"timestamp":1358937653
},
{
"user_type":"supervisor",
"author_name":"James Doe",
"agent_id":"[email protected]",
"text":"This is whispered message.",
"timestamp":1358937658
},
{
"user_type":"visitor",
"author_name":"Mary Brown",
"text":"How are you?",
"timestamp":1358937661
},
tags:[
"sales",
"support",
"feedback"]
]
}

Все они, кроме первого, содержат более 160 символов. Так что, если вы отправляете необработанное тело запроса, Twilio не примет его.

Вместо этого вы можете просто вернуть собственное тело в зависимости от того, какую информацию вы хотите отправить в Twilio.

Например, вы можете сделать:

$body = "Chat started with: {$data->visitor->name}";

Или вы можете отправить первое сообщение:

$body = "Chat message: {$data->chat->messages[0]->text}";

Тогда последнее, что вы должны сделать, это обрезать сообщение до 160 символов или разбить его на страницы, чтобы ваше сообщение не потерялось.

Простая отделка будет:

if (strlen($body) > 160) {
$body = substr($body, 0, 156) + '...';
}

// Then send the $body off to Twilio
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]