2014-09-12 99 views
0

我正在嘗試使用Twilio和C#進行傳出呼叫。從控制檯客戶端進行自定義內容出站語音呼叫

我給出了(fromnumber,tonumber,twiliodemourl)作爲3個參數,用於啓動 出站呼叫。然後它使用默認的twilio演示語音內容。

現在我需要自定義語音內容屬性,每一次我觸發啓動外呼方法

我已經通過Twilio文檔走後,我沒有發現什麼好的選擇用於動態定製 內容時,一些其他屬性 從每次我發送請求時使用C#的代碼。

我的客戶端應用程序定期運行以驗證任何新消息,然後觸發initiateoutboundall。

我沒有任何自定義URL來發布語音正在尋找的第3個 參數initiateOutBoundCall的新XML。

那麼是否需要一個外部域名URL才能從代碼動態定製語音內容? 如果沒有請提供選項/示例我必須從C#控制檯應用程序中執行此操作。

我試圖使用twimlets.com來呼應自定義文本以在通話中發言。 對於文本更改它與自定義文本工作正常。但我不確定twimlets.com/echo是否可用於生產用途?請確認。 Twimlets不支持我正在尋找的一些功能,例如收集輸入 ,如IVR消息,用於出站呼叫。

使用Twilio的語音和C#的客戶端:

  1. 聲音請求使用Twilio C#的客戶端?

    • 撥號與自定義語音內容()。如果用戶沒有回覆,則留下帶有自定義語音內容的 語音郵件()。
    • 撥號與自定義語音內容()。如果用戶迴應,在閱讀 後,需要提供以下選項:
      • 按1可重複播放相同的語音留言。
      • 按2確認消息上的操作。
      • 按3發送語音留言短信。
  2. 需要獲得每個語音呼叫/消息的響應?

    • 對於短信它發送我得到的響應爲「排隊」,而不是消息發送。 基於短信發送成功與否我需要更新一些標誌。 所以我怎麼能得到短信響應作爲「發送」。

      SMSMessage sms = twilio.SendSmsMessage(sFromNumber, sToNumber, sMessage); 
          Console.WriteLine("SMS Status::::::" + sms.Status); 
      
    • 同樣,我需要響應的語音呼叫一旦呼叫是振鈴id完成。 但它給「排隊」。

      var call = twilio.InitiateOutboundCall(sFromNumber,sToNumber, url); 
          Console.WriteLine("Call Status" + call.Status); 
      

所以,請給我提供了使用Twilio做選擇。

如果您使用C#提供任何示例示例,那就太好了。

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 – 2014-09-12 20:27:46

回答

1

Twilio福音傳教士在這裏。

您確實需要某種類型的公開URL,Twilio可以在出站呼叫得到應答後發出HTTP請求。這就是Twilio如何獲得所需的指示,以便繼續進行實時的進行中的呼叫。

正如您所指出的,有許多託管靜態TwiML內容的免費選項。 Twimlets就是其中之一。 Twimlbin.com是另一個。這兩個服務都是免費的,並且至少可以開始原型設計或設置應用程序的簡單MVP,但請記住,如果您期望有大量流量,或者需要使用自己的定製邏輯構建某些內容,那麼您可能會想要轉向別的東西。

其他的東西可能是您自己的網站作爲Azure網站託管(您也可以免費獲得)。移動到自己的網站也意味着您可以根據需要進行擴展,並且您可以開始提供動態生成的TwiML,而不僅僅限於動態TwiML,因爲您基本上使用Twimlets或Twimlbin。

如果您想處理來自<Gather>的輸入並且沒有Twimlets滿足您的需求,那麼您可能需要查看Azure選項(或某種託管網站,不一定是Azure)。這將允許您構建自己的自定義邏輯,以便處理調用者輸入並根據該邏輯動態生成TwiML響應。

Twilio爲TwiML生成提供助手庫,並使用ASP.NET MVC構建Twilio應用程序,您可以從NuGet獲取它。

假設您想要使用ASP.NET MVC構建自己的自定義Twilio應用程序,並使用Azure網站託管它。在這種情況下,使用我們的幫助程序庫,您可以在您的控制器中構建一個操作方法,該方法返回帶有<Say><Gather>動詞的TwiML。喜歡的東西:

var response = new TwilioResponse(); 
response.Say("Hello World"); 
response.BeginGather(new { action="http://example.azurewebsites.com/gather/" }); 
response.EndGather(); 

您將提供執行該操作方法在initiaizeOutboundCall方法如第三個參數的網址:

client.IntializeOutboundCall(FROM, TO, "http://example.azurewebsites.net"); 

一旦用戶輸入他們的意見,Twilio將請求URL你在<Gather>動詞動作參數指定傳遞你被點名了數字的額外的HTTP參數,你可以在你的操作方法,抓住並在您的應用程序邏輯中使用:

public void Gather(string Digits) { 

    var response = new TwilioResponse(); 
    response.Say("You pressed " + Digits); 

    return TwiML(response); 
} 

爲了得到一個電話或短信的狀態,可以包括使用statuscallback參數:

  • 短信:var result = client.SendMessage(FROM, TO, BODY, "http://example.azurewebsites.net/status");

  • 配音:var result = client.InitiateOutboundCall(FROM, TO, VOICEURL, "http://example.azurewebsites.net/status");

Twilio將使一旦達到了消息或呼叫的最終狀態,就向statusCallback URL發送HTTP請求。

希望有所幫助。

+0

感謝您的迴應和幫助。我沒有得到的一件事我無法獲得短信的狀態,Voice.Please幫助我理解。我需要創建一個動作「狀態」http://example.azurewebsites。 net/status在默認controller.If是什麼輸入參數什麼內容我應該爲公共ActionResult狀態(){} – user3311016 2015-01-13 20:07:03