はじめに
この投稿は、RPAツール「UiPath」での 実装例 について記事です。
今回は、電話・SMSのプラットフォーム「twilio」のAPIを使用して、指定の電話番号にSMSを送信します。
UiPath Adventカレンダーの 4日目 の記事でもあります。
UiPathでTwilio
UiPathマーケットプレイスには「カスタムアクティビティ」として、Twilio系のアプリが公開されており、それを使用することもできます。
ですが「使い方がよくわからない(TдT)」のと、「Twilio自体がAPIで提供されていて、WEBリクエストで普通に呼び出せる」ので、例のように「InvokeCode(コード呼び出し)」でやってみます。
Twilio側の準備
Twilioアカウントの作成、電話番号登録はネット上に情報が沢山あるので、割愛します。
今回はTwilioの「Messaging API」を使用しますが、パラメータとして
- accountID
- authToken
- messagingServiceSID(Fromパラメータに電話番号を指定する形でも可)
を使用するので、それぞれ以下のように取得します
UiPath側の準備
HTTP Request アクティビティでも出来そうな気もしますが、エラーハンドリングなどしっかりしたいので、InvokeCode(コード呼び出し)アクティビティを使用して、Twillio のAPIを呼び出してみます。
InvokeCode(コード呼び出し)アクティビティで、以下のように指定します。
上記で取得したTwilioの「accountID・authToken・messagingServiceSID」を使用して、指定の電話番号にメッセージを送信するコードです。
'// 引数
'// - in_accountID
'// - in_authToken
'// - in_messagingServiceSID
'// - in_to
'// - in_text
'// - out_error
'// - out_result
Try
Dim wc As New Net.WebClient
'// URL
Dim reqUrl As String = String.Format("https://api.twilio.com/2010-04-01/Accounts/{0}/Messages.json", in_accountID)
out_result &= String.Format("[url]{0}", reqUrl)
'// パラメータ
Dim param As New System.Collections.Specialized.NameValueCollection
param("To") = in_to
param("MessagingServiceSid") = in_messagingServiceSID
param("Body") = in_text
out_result &= String.Join(" ", param.AllKeys.Select(Function(k As String) "[" & k & "]" & param(k)))
'// basic認証
wc.Credentials = New System.Net.NetworkCredential(in_accountID, in_authToken)
'// 送信
Dim res As Byte() = wc.UploadValues(reqUrl, "POST", param)
out_result &= String.Format("[response]{0}", System.Text.Encoding.ASCII.GetString(res))
Catch ex As Exception
out_error = ex.Message
End Try
ポイントは「ベーシック認証」であることです。それ以外は普通のPOST形式のAPIリクエストです。
送信すると以下のようにSMSが送信されます。
終わりに
いかがでしたでしょうか。実装時に役立てば幸いです。
この記事が参考になったら、 LGTMをお願いします。閲覧ありがとうございました。