可以在此處找到 Twilio API 的文檔。
個人在此發布。
twilio-ruby
對所有變更使用語意版本控制的修改版本。有關詳細信息,請參閱此文件。
該程式庫支援以下 Ruby 實作:
紅寶石2.4
紅寶石2.5
紅寶石2.6
紅寶石2.7
紅寶石3.0
紅寶石3.1
紅寶石3.2
JRuby 9.2
JRuby 9.3
JRuby 9.4
升級指南
若要使用 Bundler 進行安裝,請取得最新的穩定版本:
gem 'twilio-ruby' , '~> 7.3.6'
要透過 Rubygems 手動安裝twilio-ruby
,只需 gem install:
gem install twilio-ruby -v 7.3.6
若要從最新源自行建置和安裝開發分支:
git clone [email protected]:twilio/twilio-ruby.git
cd twilio-ruby
make install
訊息如果命令列向您顯示「權限被拒絕」的錯誤訊息,請嘗試使用 sudo 執行上述命令。
例如:
sudo gem install twilio-ruby
為了確保安裝成功,請嘗試向自己發送一條短信,如下所示:
require "twilio-ruby"
# Your Account SID and Auth Token from console.twilio.com
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "your_auth_token"
@client = Twilio :: REST :: Client . new account_sid , auth_token
message = @client . messages . create (
body : "Hello from Ruby" ,
to : "+12345678901" , # Text this number
from : "+15005550006" , # From a valid Twilio number
)
puts message . sid
警告在本機測試時可以對您的憑證進行硬編碼,但在提交任何程式碼或部署到生產環境之前,您應該使用環境變數來保密它們。查看如何設定環境變數以獲取更多資訊。
require 'twilio-ruby'
# Your Account SID and Auth Token from console.twilio.com
account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
# Initialize the Twilio Client with your credentials
@client = Twilio :: REST :: Client . new account_sid , auth_token
require 'twilio-ruby'
# Your Account SID from console.twilio.com
account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# API Key from twilio.com/console/project/api-keys
api_key_sid = 'zzzzzzzzzzzzzzzzzzzzzz'
api_key_secret = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
# set up a client to talk to the Twilio REST API using an API Key
@client = Twilio :: REST :: Client . new api_key_sid , api_key_secret , account_sid
若要利用 Twilio 的全球基礎設施,請為用戶端指定目標區域和/或邊緣:
# set up a client to talk to the Twilio REST API over a specific region and edge
@client = Twilio :: REST :: Client . new account_sid , auth_token , nil , 'au1'
@client . edge = 'sydney'
# you may also specify the region and/or edge after client creation
@client = Twilio :: REST :: Client . new account_sid , auth_token
@client . region = 'au1'
@client . edge = 'sydney'
這將導致hostname
從api.twilio.com
轉換為api.sydney.au1.twilio.com
。
@client . calls . create (
from : '+14159341234' ,
to : '+16105557069' ,
url : 'http://example.com'
)
@client . messages . create (
from : '+14159341234' ,
to : '+16105557069' ,
body : 'Hey there!'
)
@client . messages . list ( limit : 20 )
# put the message sid you want to retrieve here:
message_sid = 'SMxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
@client . messages ( message_sid ) . fetch
該庫會自動為您處理分頁。集合(例如calls
和messages
)具有在幕後進行分頁的list
和流方法。使用list
和stream
,您可以指定要接收的記錄數 ( limit
) 以及希望每個頁面取得的最大大小 ( page_size
)。然後圖書館將為您處理該任務。
list
急切地獲取所有記錄並將它們作為列表返回,而stream
返回一個枚舉器並在迭代集合時延遲檢索記錄頁。您也可以使用page
方法手動分頁。
有關這些方法的更多信息,請查看自動生成的庫文檔。
require 'twilio-ruby'
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'
@client = Twilio :: REST :: Client . new ( account_sid , auth_token )
@client . calls . list
. each do | call |
puts call . direction
end
為了啟用偵錯日誌記錄,請將“logger”實例傳遞給客戶端,並將等級至少設為“DEBUG”
@client = Twilio :: REST :: Client . new account_sid , auth_token
myLogger = Logger . new ( STDOUT )
myLogger . level = Logger :: DEBUG
@client . logger = myLogger
@client = Twilio :: REST :: Client . new account_sid , auth_token
myLogger = Logger . new ( 'my_log.log' )
myLogger . level = Logger :: DEBUG
@client . logger = myLogger
如果 Twilio API 傳回 400 或 500 等級的 HTTP 回應, twilio-ruby
函式庫將會拋出Twilio::REST::RestError
。 API 作業期間出現 400 等級錯誤是正常現象(例如“Invalid number”
、 “Cannot deliver SMS to that number”
),應進行適當處理。
require 'twilio-ruby'
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'
@client = Twilio :: REST :: Client . new account_sid , auth_token
begin
messages = @client . messages . list ( limit : 20 )
rescue Twilio :: REST :: RestError => e
puts e . message
end
為了幫助調試,該庫允許您存取底層請求和回應物件。此功能內建於該庫附帶的預設 HTTP 用戶端中。
例如,您可以檢索最後一個回應的狀態代碼,如下所示:
require 'rubygems' # Not necessary with ruby 1.9 but included for completeness
require 'twilio-ruby'
# Your Account SID and Auth Token from console.twilio.com
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'
@client = Twilio :: REST :: Client . new ( account_sid , auth_token )
@message = @client . messages . create (
to : '+14158675309' ,
from : '+14258675310' ,
body : 'Ahoy!'
)
# Retrieve the status code of the last response from the HTTP client
puts @client . http_client . last_response . status_code
twilio-ruby
使用 Faraday 發出 HTTP 請求。您可以告訴Twilio::REST::Client
使用任何 Faraday 適配器,如下所示:
@client . http_client . adapter = :typhoeus
若要將自訂 HTTP 用戶端與此說明程式庫結合使用,請參閱有關如何執行此操作的進階範例。
若要套用中介軟體等自訂項,您可以使用configure_connection
方法,如下所示:
@client . http_client . configure_connection do | faraday |
faraday . use SomeMiddleware
end
如果您只需要產生與 Twilio 用戶端一起使用的功能令牌,您可以執行以下操作:
require 'twilio-ruby'
# put your own account credentials here:
account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
# set up
capability = Twilio :: JWT :: ClientCapability . new account_sid , auth_token
# allow outgoing calls to an application
outgoing_scope = Twilio :: JWT :: ClientCapability :: OutgoingClientScope . new 'AP11111111111111111111111111111111'
capability . add_scope ( outgoing_scope )
# allow incoming calls to 'andrew'
incoming_scope = Twilio :: JWT :: ClientCapability :: IncomingClientScope . new 'andrew'
capability . add_scope ( incoming_scope )
# generate the token string
@token = capability . to_s
wiki 的功能部分有一個稍微更詳細的文件。
要控制電話呼叫,您的應用程式需要輸出 TwiML。
您可以像這樣建立 TwiML 回應:
require 'twilio-ruby'
response = Twilio :: TwiML :: VoiceResponse . new do | r |
r . say ( message : 'hello there' , voice : 'alice' )
r . dial ( caller_id : '+14159992222' ) do | d |
d . client 'jenny'
end
end
# print the result
puts response . to_s
這將列印以下內容(空白除外):
xml version = " 1.0 " encoding = " UTF-8 " ?>
< Response >
< Say voice = " alice " >hello there Say >
< Dial callerId = " +14159992222 " >
< Client >jenny Client >
Dial >
Response >
此儲存庫中存在的Dockerfile
及其各自的twilio/twilio-ruby
Docker 映像目前僅由 Twilio 用於測試目的。
如果您需要安裝或使用該程式庫的協助,請先查看 Twilio 支援幫助中心,如果您找不到問題的答案,請提交支援票證。
如果您在庫中發現了錯誤或希望添加新功能,請繼續針對此儲存庫提出問題或拉取請求!