2017-08-15 32 views
1

在Twilio文件,它規定你可以發送文本到語音呼叫靜態這樣的:發送一個動態文本到語音呼叫,而不URL參考

use Twilio\Rest\Client; 

$AccountSid = ""; 
$AuthToken = ""; 

$client = new Client($AccountSid, $AuthToken); 

try { 
    $call = $client->account->calls->create(
     "+15555551234", 
     "+15555554321", 
     array("url" => '/twilio/twilio.welcome.message.php') 
    ); 
    echo "Started call: " . $call->sid; 
} catch (Exception $e) { 
    echo "Error: " . $e->getMessage(); 
} 

我覺得這是一個有點多的動態創建的消息。這對於靜態消息來說很好。我想要做的是這樣的:

use Twilio\Twiml; 

$response = new Twiml(); 
$response->say('Chapeau!', ['voice' => 'woman', 'language' => 'fr']); 

$AccountSid = ""; 
$AuthToken = ""; 

$client = new Client($AccountSid, $AuthToken); 

try { 

    $call = $client->account->calls->create(
     "+phoneNumber", 
     "+phoneNumber", 
     array("response" => $response) 
    ); 
    echo "Started call: " . $call->sid; 
} catch (Exception $e) { 
    echo "Error: " . $e->getMessage(); 
} 

這暗示着能夠做到這一點的文檔中,但我不能在任何地方找到它。如果沒有比創建一個php腳本更簡單的實現方式,打電話,然後刪除以使其起作用,我會非常震驚。但我的人生中看到過更糟糕的事情。

+0

你能解釋一點有關你是想實現的原因是什麼我不清楚你遇到的麻煩。你是否試圖一次發送多個郵件到不同的號碼? – Andy

+0

是的安迪,這就是我想要做的。我可以用他們提供的方法清楚地做到這一點。我只是不明白爲什麼我不需要爲此添加額外的文件。 –

+0

在文檔中您找到了'response'參數嗎? – philnash

回答

1

Twilio開發人員在這裏傳播。

恐怕沒有辦法將TwiML發送到Twilio,以便在應答呼叫時執行。呼叫連接時,您仍然需要發送一個URL爲respond with TwiML的URL。

但是,您可以使該URL動態響應。如果您只是發送一條消息以便讀出,那麼您可以將該消息作爲查詢參數發送到URL中,然後在調用webhook時使用該消息。例如:

$message = "Hello! This is a message!"; 
$call = $client->account->calls->create(
    "+15555551234", 
    "+15555554321", 
    array("url" => '/twilio/twilio.welcome.message.php?message='.urlencode($message)) 
); 

然後,在你的網絡掛接:

<?php 
    $message = $_REQUEST['message']; 
    header("Content-type: text/xml"); 
    echo "<?xml version='1.0' encoding='UTF-8'?>\n"; 
?> 
<Response> 
    <Say><?php echo $message ?></Say> 
</Response> 

這種方式,你可以動態創建的消息,但僅舉辦一個網絡掛接端點。

讓我知道這是否有幫助。

+0

是的,這確實有幫助,我已經想到了。但是,爲什麼要讓文件在創建時輕鬆接受消息作爲參數,或接受TwiML呢?而不是創建一個完整的額外文件。這必定是一個常見的典型用例,我只是好奇它爲什麼沒有被公司解決。 –

+0

對我來說,這只是我的看法,我自己並不在API上工作,這隻適用於最簡單的示例。如果你想以這種方式構建你的應用程序,然後發現你想要做一些稍微複雜的事情,那麼你將不得不重新構建你的應用程序,讓它有一個可以接收webhook的端點。在這種情況下,我們試圖簡化與Twilio交互的方法。 – philnash

0

如何使用Twiml bin?這種方式,而不是指向你的服務器,你會有一個twilio託管的URL,爲您生成twiml。它支持動態變量,循環等

見:https://support.twilio.com/hc/en-us/articles/230878368

然後使用動態變量是這樣的:

<Say>Hello {{CustomerName}}</Say>