2014-11-15 54 views
0

我正在爲我的一個客戶端的一個項目工作,他們會在收到新的即時聊天聊天時向他們發送文本(通過Twilio)。這個webhook(docs here)發送關於訪問者的信息以及他們對聊天前調查的迴應。我可以發送像「在您的網站上的新聊天」這樣的基本信息!但不包含任何可變數據。這裏是我的代碼的開始:如何接收Webhook並通過Twillio發送郵件及其數據

<?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(); 
} 
?> 

謝謝!

回答

1

它看起來像你試圖發送整個$data作爲消息的主體。

根據Twilio的REST docsBody變量只能是160個字符(正常的SMS長度)。

當你的ID登錄網絡掛接提供的鏈接看,有幾個不同的數據對象,你可能會得到:

一個簡單的網頁鉤例如,當聊天開始:

{ 
    "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 
相關問題