
シェア:
ポールはNexmoのiOSデベロッパーアドボケイトです。ベテランのソフトウェアエンジニア、トレーナー、講演者であり、プロトタイピング、ベストプラクティス、敏捷性とのバランスに重点を置いたAppleプラットフォームでのデータ駆動型ソリューションを専門としています。
Voice APIとSwiftで電話を受ける
所要時間:7 分
このチュートリアルでは、電話を受け取ることができる Swift アプリケーションを作成します。 VaporWebフレームワークと Nexmo Voice API を使って電話を受けることができる Swift アプリケーションを作成します。.このチュートリアルは MacOS と Ubuntu の両方で行うことができます。
完全なソリューションについては Githubレポ.
前提条件
Nexmo CLI Nexmo CLI- これを使用してアプリケーションを作成し、番号を購入し、2つをリンクします。
Swift 4.1以上 - MacOSの場合、Xcode 9.3以上で動作します。
プラン
このチュートリアルでは、以下の手順を説明します:
Nexmoのコンセプトを知る
新しいVaporプロジェクトを作成する
Voiceアンサーのルートを追加する
ngrokを使ってアプリケーションを公開する
Nexmo番号の購入
ナンバーで使用するNexmoアプリケーションを作成する
アプリケーションのテスト
ネクスモ・コンセプツ
組み立てに入る前に、いくつかのコンセプトを理解しておく必要がある。
A Nexmoアプリケーションを使用すると、Nexmo製品、この場合は Voice APIを使用して、クラウド上で音声アプリケーションを構築することができます。
Nexmoアプリケーションは2つのURLをパラメータとして要求します:
answer_url- Nexmoは、通話に応答するとすぐにこのURLにリクエストを行います。event_url- Nexmoは、コールステータスが変更されると、非同期でこのURLにイベント情報を送信する。
どちらのURLもJSONを返す必要があり Nexmo Call Control Object (NCCO)を参照する必要があります。以下の例では、着信に対して事前に定義されたテキストを読み上げるNCCOを定義します。 音声合成エンジンを使用します。
A Nexmoバーチャル番号はアプリに関連付けられ、アプリへの「入口」となります。
Nexmoアプリケーションの詳細については、Nexmoをご覧ください。 APIリファレンス.
新ヴェイパープロジェクト
まだVaporをインストールしていない場合は、このコマンドを実行してインストールしてください:
コマンドラインから、プロジェクトを保存したい適切な場所(Documentsディレクトリなど)に移動し、新しいVaporアプリを作成する:
MacOSをお使いの場合 vaporが自動的にXCodeプロジェクトを作成します。 -yオプションは自動的にXcodeプロジェクトを開きます):
Build & Runでアプリをテストします。 Runスキームが選択されていることを確認してください。すべてのコンパイルが完了すると、サーバーが起動し、コンソールに通知が表示されます:
Server starting on http://localhost:8080ブラウザをそのURLに向けると It works!メッセージが表示されるはずです。
ルートを追加する
として機能するルートを追加します。 answer_urlとなるルートを追加します。 Nexmoアプリケーション. http://localhost:8080/webhooks/answerは以下のJSONオブジェクトで応答します:
[
{
"action":"talk",
"text":"<speak>To be <break strength='weak' \/> or not to be <break strength='weak' \/> that is the question.<\/speak>"
}
]Vaporプロジェクトは routes.swiftファイルに格納されます。 Sources/Appグループ内のファイルに保存されます。このファイルを開いて、既存のルートをすべてクリアして、新しいルートを定義します:
import Vapor
public func routes(_ router: Router) throws {
router.get("/webhooks/answer") { request -> String in
let talk = Action(
action: "talk",
text: "<speak>To be <break strength='weak' /> or not to be <break strength='weak' /> that is the question.</speak>")
let encoder = JSONEncoder()
guard let data = try? encoder.encode([talk]) else { return "error encoding" }
return String(data: data, encoding: .utf8) ?? "error"
}
}
Actionは単純な スウィフト構造体ルータを閉じた後に定義します:
struct Action: Encodable {
var action: String
var text: String
}コーディングによって Actionに適合するように Encodableに準拠するようにコーディングすることで JSONEncoderを使用できるようにする。
アプリをビルドして実行し、新しいルート出力を次の場所でテストしてください: http://localhost:8080/webhooks/answer.
として使用される URL ができました。 answer_url.
アプリケーションを公開する
NexmoがあなたのVaporアプリケーションにアクセスするには、一般に公開されているURLにアクセスする必要があります。
ngrokは、公開URLを通してローカルのウェブサーバーを公開するシンプルなユーティリティです。
ngrok をインストールした状態でをインストールした状態で、以下のコマンドを実行する:
転送先アドレスは、アカウントを設定する際に必要になりますので、控えておいてください。 https://7ffc0230.ngrok.io.

番号を購入する
これはNexmoアプリケーションに接続するための番号になります。以下の例ではアメリカの番号を使用していますが、他の国の番号も利用可能です。 利用可能です。.
Account: Nexmoアカウントにサインアップすると、2ユーロが残高に加算される。
新しい番号を購入するには、Nexmo CLIを使用します:
購入時に割り当てられた新しい番号を控えておいてください。
Nexmoアプリケーションの作成
次に、新しいNexmoアプリケーションを作成することで、すべてを結びつけます。 新しいNexmoアプリケーションを作成します:
注:2つ目のURLパラメータ、http://your-ngrok-forwarding-address/webhooks/events は存在せず、実際に使用することはありませんが、Nexmoアプリケーションを作成する際にはイベントURLを指定する必要があります。
上記のコマンドによる出力には、新しいアプリケーションのIDが含まれる(例:Application created: 39083ced-5275-423d-8a1f-9db528c106b1).電話番号をアプリケーションにリンクするには、このアプリケーションIDが必要です:
アプリケーションはあなたの http://your-ngrok-forwarding-address/webhooks/answerURLにリクエストを送るようになりました。
アプリケーションのテスト
携帯電話からNexmo番号に電話をかけると、最も重要な質問を聞くことができる。
結論
数行のコードで、電話を受けて発信者にメッセージを話すアプリケーションを作成することができます。他にも 他の方法通話相手とやりとりする他の 音声合成マークアップ言語(SSML)タグを使うことができます。
次はどこだ?
もっと詳しく知りたいですか?のドキュメントをご覧ください。 Nexmoデベロッパーのドキュメントをご覧ください。 コールフロー, Voice APIおよび Nexmoコールコントロールオブジェクト.