
ASP.NET Coreで電話の受話器入力(DTMF)を処理する方法
所要時間:6 分
対話型音声応答(IVR)システムの基本的な構成要素は、入力の処理です。公衆交換電話網(PSTN)からプログラムで入力できるものは、一般的に2種類あり、Vonageではどちらもサポートしています:
デュアル・トーン・マルチ周波数 (DTMF)-ユーザーの携帯電話から収集された入力イベントです。例:「セールスは1を、カスタマーサービスは2を押してください。
自動音声認識(ASR)-ユーザーの声を入力とする音声認識イベントです。
このチュートリアルでは Voice API を使用します。を使用して、ASP.NET コアアプリケーションに前者 (DTMF) をすばやくスナップする方法を学びます。PSTN 通話でユーザーから DTMF を収集するには、次のようにします:
設定 Vonage API Accountの設定アカウントをお持ちでない場合
CLIを使用したVonageアプリケーションの作成 CLIを使った.
C#のコードを書いてください。
アプリをウェブに接続する。
コードへジャンプ
このチュートリアルをスキップして動作するサンプルを取り込みたい場合は、このサンプルを GitHub.
前提条件
Vonage CLI。お持ちでない場合は、次の方法でインストールできます。
npm install @vonage/cli -g最新の .NET Core SDK
Visual StudioまたはVisual Studio Code。私はVisual Studio 2019を使うつもりだ。
ngrokをテストする。必要なのは無料版だけです。
Vonage API アカウント
このチュートリアルを完了するには Vonage APIアカウント.まだお持ちでない方は 今すぐサインアップをクリックし、無料のクレジットを使用して構築を開始することができます。アカウントを取得すると、APIキーとAPIシークレットが Vonage APIダッシュボード
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
ングロックをスピンアップ
ngrok を使用して、ローカルで実行中の ASP.NET Core アプリケーションをインターネットに公開します。ngrok をインストールしたら、コンソールでコマンド ngrok http 5000を実行するだけだ。以下のようなものが表示される:
ngrok
注:このチュートリアルでは Kestralを使用しています。代わりに IIS Express を使用したい場合は、こちらの 説明を参照してください。
ここで注意しなければならないのは、転送先URLである。 http://34332d9dca30.ngrok.io.Vonage番号に電話がかかってくると、VonageはアプリケーションにWebHookと呼ばれるものを送信します。これは単なるHTTP GETリクエストで、コール・コントロール・オブジェクト(NCCO)と呼ばれるものを要求します。アプリケーションは /webhooks/answerでリッスンするので、必要なURLはすべて http://34332d9dca30.ngrok.io/webhooks/answer.
CLIの設定
Vonage CLIをまだセットアップしていない場合は、次のコマンドを実行してください。 vonage config:set <api_key> <api_secret>ここでAPIキーとシークレットは、アカウントの設定ページにある アカウントの設定ページ
背番号の購入とアプリケーションの作成
CLIがセットアップされたので、番号を購入し、Vonageアプリケーションを作成し、そのアプリケーションに番号をリンクします。
番号を買う
番号を購入するには、次のコマンドを使用します(あなたの国IDを US)
を入力する。 confirm購入した番号が出力されます。
アプリケーションの作成
次にアプリケーションを作成します。create applicationコマンドは2つのURLを取ります。answer URLはVonageが着信コールを送る先の番号で、event URLはVonageがあなたの番号から発生したイベントを送るURLです。忘れずに 34332d9dca30をngrok URLのランダムハッシュに置き換えることを忘れないでください:
この操作により、アプリケーションIDと秘密鍵が返される。これら両方の値を保存してください。このチュートリアルではアプリIDのみを使用しますが、秘密鍵はアプリケーションリクエストを認証するために使用します。
アプリケーションをリンクする
次に、新しく購入した番号をアプリケーションにリンクさせる必要があります。番号をリンクすることで、Vonageはその番号で受信したすべてのコールをアプリケーションのWebhook URLに送信するようになります。これを行うには、アプリの作成リクエストで受け取ったアプリケーションID(次のようになります)が必要です。 e7a25242-77a1-42cd-a32e-09febcb375f4そして、次のようなコマンドを実行します:
アプリを作る
あとはアプリを作るだけだ!
アプリの作成
コンソールで、通常コードを置くディレクトリに移動する。これから Web APIASP.NET Coreアプリケーションを作成します。ここでは httpsを設定しない。以下のdotnet CLIコマンドを使えば、簡単に雛形が作れます:
Vonage SDKをインストールする
cdコマンドを実行して、自分自身を VonageDtmfプロジェクトフォルダに移動し、次のコマンドを実行して Vonage Server SDKをプロジェクトに追加します。
ヴォイス・コントローラーの作成
作成されたディレクトリに移動し、お好きなIDEでcsprojファイルを開いてください。その中の Controllersという新しい空のAPI Controllerを追加します。 VoiceController.を追加します。 VoiceControllerという新しい空の API Controller を追加します。 System.Threading.Tasks, Vonage.Utility, Vonage.Voice.EventWebhooksと Vonage.Voice.Nccos.その後、コントローラは次のようになる。
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Vonage.Utility;
using Vonage.Voice.EventWebhooks;
using Vonage.Voice.Nccos;
namespace VonageDtmf.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class VoiceController : ControllerBase
{
}
} 回答を処理する
これから /webhooks/answer.VonageはサーバーからNCCOを取得するので、このルートはGETリクエストになる。このメソッドは、2つのアクション(通話の指示)を持つNCCOを構築する。アクション1はトークアクションで、ユーザーに桁を入力するように指示する。次に、2番目のアクションはMultiInputアクションである。このアクションは、ユーザーから入力を収集する。このアクションで、DTMFおよび/または音声入力を収集するかどうかを指定できます。アクションに DtmfSettingsオブジェクトをアクションに追加し、最大桁数を 1.のサーバーのベースURLとなるイベントURLを渡します。 /webhooks/dtmf(最後に、これらのアクションをNCCOに変換し、そのアクションからのJSONをVonageに返します。
[Route("/webhooks/answer")]
[HttpGet]
public ActionResult Answer()
{
var responseUrl = $"{Request.Scheme}://{Request.Host}/webhooks/dtmf";
var talkAction = new TalkAction
{
Text = "Hello please enter a digit.",
BargeIn = "true"
};
var inputAction = new MultiInputAction
{
Dtmf = new DtmfSettings { MaxDigits = 1 },
EventUrl = new[] { responseUrl },
EventMethod = "POST"
};
var ncco = new Ncco(talkAction, inputAction);
return Ok(ncco.ToString());
} DTMF入力の処理
ユーザーが携帯電話で数字を入力すると、私たちのアプリはVonageからユーザー入力数字を含む別のウェブフックを受け取ります。そのリクエストから MultiInput構造を取り出します。次に、その構造体内の Dtmfオブジェクトに埋め込まれた数字を使用して、新しいトークアクションを作成し、ユーザーに入力内容を伝えます。
[Route("/webhooks/dtmf")]
[HttpPost]
public async Task<ActionResult> Dtmf()
{
var input = await WebhookParser.ParseWebhookAsync<MultiInput>
(Request.Body, Request.ContentType);
var talkAction = new TalkAction
{
Text = $"Thank you for inputting: {input.Dtmf.Digits}"
};
var ncco = new Ncco(talkAction);
return Ok(ncco.ToString());
} アプリのテスト
あとはアプリケーションをテストするだけだ。アプリケーションを実行するには、以下のコマンドを使用する:
注:IIS Expressで実行することを選択した場合は、次の記事を必ずお読みください。 ngrokでIIS Expressを使用する.回答方法において、Request Host ではなく、x-original-host を使用してホスト名を形成していることを確認してください。
これでアプリケーションは実行され、Vonage番号にダイヤルすることができます!ユーザーからのDTMF入力を受信できます。
次はどうする?
ユーザーからのDTMF入力を管理し、PSTN回線を介して応答することで、音声とのあらゆる種類の強力な統合を構築することができます。当社の 対話型音声応答(IVR)ガイド.
また、音声と.NETのクールな統合についてお話ししたことがありますので、こちらもご覧ください:
リソース
このブログ記事で作成したプロジェクトのコピーは、次の場所にあります。 GitHub.
