Web Api/Rest API の概念は初めてですが、Visual Studio 2012 MVC4 Web Api を使用する予定です。Twilio 経由でテキスト/SMS メッセージを受信し、応答を返すアプリケーションを作成するにはどうすればよいですか? ここと Twilio の Web サイトでいくつかの記事を検索しましたが、MVC4 Web Api の使用方法に関する洞察は得られません。誰かが私を助けて、いくつかの例を示したり与えたりできますか?
2 に答える
私が見つけた Web API に関するドキュメントはどれも本当に気に入らないので、この質問は少し古くなっていますが、答えたいと思いました。
Twilio は、作成したエンドポイントに HTTP 要求 (Twilio サイトで GET または POST 動詞を選択できます) を発行し、本文が適切に形成されている場合、HTTP 応答は SMS 応答をユーザーに返します。ここの下部にある Twilio 構成のスクリーン ショットを示します。
通常、エンドポイントからは json のみを返しますが、Twilio の場合は XML を返す必要があります。拡張機能がマッピングされたルーティングを持つようにルーティングを設定します (これにより、Twilio リクエストに対して XML を返す URL を設定できます)。これが必要なのは、Twilio が Accept ヘッダーに text/xml をポストしないためです。実際には Accept ヘッダーがありますが、*/* が含まれていますが、XML 以外では失敗します。
config.Routes.MapHttpRoute(
name: "DefaultApiWithExtension",
routeTemplate: "xml/{controller}/{id}",
defaults: new { id = RouteParameter.Optional, ext="xml" }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional}
);
config.Formatters.XmlFormatter.AddUriPathExtensionMapping("xml", "application/xml");
config.Formatters.JsonFormatter.AddUriPathExtensionMapping("json", "application/json");
次に、パッケージ マネージャー コンソールを使用して TwiML nuget パッケージをインストールします。これは TwilioResponse クラスにのみ使用されます。
Install-Package Twilio.TwiML
必要に応じてこのクラスを追加しますが、コントローラー アクション メソッドにパラメーターを配置するだけの場合は必須ではありません。
public class TwilioRequest
{
public string MessageSid { get; set; }
public string AccountSid { get; set; }
public string From { get; set; }
public string To { get; set; }
public string Body { get; set; }
}
そして、コントローラーのアクションは次のようになります。
public virtual HttpResponseMessage Get([FromUri]TwilioRequest request)
{
TwilioResponse tr = new TwilioResponse();
if (request.Body == "Hello World")
tr.Message("Hello back!");
else
tr.Message("Text 'Hello World' for a friendly message.");
return Request.CreateResponse(HttpStatusCode.OK, tr.Element);
}
または、私が作成した TwilioRequest クラスを使用したくない場合は、次のようにします。
public virtual HttpResponseMessage Get(string body)
{
TwilioResponse tr = new TwilioResponse();
if (body == "Hello World")
tr.Message("Hello back!");
else
tr.Message("Text 'Hello World' for a friendly message.");
return Request.CreateResponse(HttpStatusCode.OK, tr.Element);
}
最後にテストするには、エンドポイントに対して GET リクエストを実行するように Twilio を構成する必要があります。これは、この投稿の時点で彼らのサイトに表示されていたものです。
構成 URL に /xml/controllername パターンが含まれていることに注意してください。ただし、Twilio でヒットする前に、ブラウザー、ポストマン、またはフィドラーでこれをテストできます。正しく機能している場合、応答本文は次のようになります。
<response>
<message>Hello Back!</message>
</response>
最終的な注意事項:
技術的には、TwiML ライブラリは必要ありません。TwiML ライブラリは、XML にシリアル化するラッパー クラスを提供するだけであり、数分で独自のライブラリを作成できます。また、Twilio が正常に動作しているときにデバッグできるように、Twilio から自分のマシンに http 要求を直接送信するファイアウォールのポートを開くと便利であることがわかりました。
Twilio エバンジェリストはこちら。
すべてのクイックスタートは、Razor 構文を使用する C# に変換されています。ページ上部の言語ドロップダウンからC#を選択するだけです。C# SMS クイックスタートの開始への直接リンクは次のとおりです。
http://www.twilio.com/docs/quickstart/csharp/sms
また、ASP.NET MVC アプリケーションでの Twilio .NET ヘルパー ライブラリの使用に関するものを含め、Twilio を .NET 開発者に紹介する前に私が書いた一連のブログ投稿を確認することをお勧めします。
- .NET 開発者のための Twilio - パート 1: Twilio ヘルパー ライブラリの紹介
- .NET 開発者のための Twilio - パート 2: プロジェクトへの Twilio ヘルパー ライブラリの追加
- .NET 開発者のための Twilio - パート 3: Twilio REST API ヘルパー ライブラリの使用
- .NET 開発者のための Twilio - パート 4: Twilio.TwiML ヘルパー ライブラリの使用
- .NET 開発者のための Twilio - パート 5: Twilio クライアント、MVC、および WebMatrix ヘルパー ライブラリ
- .NET 開発者のための Twilio - パート 6: ASP.NET Web フォームを使用した SMS および音声アプリケーション フローの作成
- .NET 開発者のための Twilio - パート 7: ASP.NET MVC を使用した SMS および音声アプリケーション フロー
特に、テキスト メッセージへの返信に関する情報については、パート 1、2、4、および 7 に最も関心があるでしょう。
最後に、GitHub の Twilio .NET ヘルパー ライブラリ wiki にアクセスすると、コード サンプルがいくつかあります。
https://github.com/twilio/twilio-csharp/wiki
ASP.NET Web API を使用して Twilio リクエストに応答する方法を示す、開発者の Long Le が私たちのブログに書いたブログ投稿も紹介します。これには、いくつかの詳細が必要です。
http://www.twilio.com/blog/2012/11/building-twilio-apps-using-asp-net-mvc-4-web-api.html
個人的には、標準の ASP.NET MVC コントローラーを使用する方が簡単だと思いますが、それは私の個人的な好みです。
それが役立つことを願っています。