2012-11-14 72 views

回答

1

當您在Twilio號碼上收到短信時,Twilio會將make an HTTP request發送到您的服務器。您可以通過響應該請求與XML,像這樣進入SMS迴應:

<Response> 
    <Sms>This is my response</Sms> 
</Response> 

您可以生成XML響應自己,或者輔助庫包含幫助你返回XML到客戶端的方法。我建議看一下Twilio Ruby SMS quickstart的一個簡單例子,然後從那裏開始。

+0

謝謝...但這並不回答關於是否有寶石來處理它的方法。這聽起來像我需要閱讀用戶的SMS響應,通過自己解析HTTP Post或XML來查看所說的內容。是對的嗎? – kwh941

+0

這是正確的,你需要自己解析HTTP POST。你是生成XML的人(告訴Twilio回覆的內容)。 –

2

對於其他可能有此問題的人,我發現this example application from this question非常有用。你需要做的是:

  1. 設置你的Twilio號短信網址張貼到一定的控制器在您的應用程序(例如,myapp.com/twilio/process-sms)
  2. 添加到匹配的路由URL在您的Twilio控制器
  3. 正確的行動寫一些簡單的邏輯類似下面根據您的自定義業務邏輯
  4. 迴應處理答覆/郵件到您的號,如果需要的話,使用.xml.erb文件就像一個低於

類TwilioController < ApplicationController的

def process_sms 
    @city = params[:FromCity].capitalize 
    @state = params[:FromState] 
    @from = params[:From] 
    u = User.find_by_phone_number(@from) 
    @user = u.name 
    b = params[:Body] 

if b.downcase.include?("question") 
    @type = "Question" 
    @question = u.questions.build(:description => b) 
    @question.save! 
    render 'new_question.xml.erb', :content_type => 'text/xml' 
elsif b.downcase.include?("contact") 
    @type = "Contact" 
    @contact = u.contacts.build(:name => b) 
    @contact.save! 
    render 'new_contact.xml.erb', :content_type => 'text/xml' 
else 
    @type = "Not sure" 
    render 'not_sure.xml.erb', :content_type => 'text/xml' 
end 

的.build將創建對象和.save將保存對象。然後,您只需返回Twilio TWIML即可對用戶做出響應。如:

應用程序/視圖/ twilio/new_contact.xml.erb

<Response> 
    <Sms>We added a new contact for you.</Sms> 
</Response> 
+0

另外,請注意#params [:From]包含附有國際代碼的用戶的電話號碼。像「+1 ....」 – dbKooper