https://a.storyblok.com/f/270183/308007/2f8398cb2b/receive-call-swift.jpg

Voice APIとSwiftで電話を受ける

最終更新日 May 12, 2021

所要時間: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をインストールしていない場合は、このコマンドを実行してインストールしてください:

brew install vapor/tap/vapor

幅広いインストール手順 MacOSおよび Ubuntu.

コマンドラインから、プロジェクトを保存したい適切な場所(Documentsディレクトリなど)に移動し、新しいVaporアプリを作成する:

vapor new ReceiveCall cd ReceiveCall/

MacOSをお使いの場合 vaporが自動的にXCodeプロジェクトを作成します。 -yオプションは自動的にXcodeプロジェクトを開きます):

vapor xcode -y

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 をインストールした状態でをインストールした状態で、以下のコマンドを実行する:

ngrok http 8080

転送先アドレスは、アカウントを設定する際に必要になりますので、控えておいてください。 https://7ffc0230.ngrok.io.

ngrok running in terminal with forwarding address https://7ffc0230.ngrok.io

番号を購入する

これはNexmoアプリケーションに接続するための番号になります。以下の例ではアメリカの番号を使用していますが、他の国の番号も利用可能です。 利用可能です。.

Account: Nexmoアカウントにサインアップすると、2ユーロが残高に加算される。

新しい番号を購入するには、Nexmo CLIを使用します:

nexmo number:buy --country_code US

購入時に割り当てられた新しい番号を控えておいてください。

Nexmoアプリケーションの作成

次に、新しいNexmoアプリケーションを作成することで、すべてを結びつけます。 新しいNexmoアプリケーションを作成します:

nexmo app:create "Receive Call Demo" http://your-ngrok-forwarding-address/webhooks/answer http://your-ngrok-forwarding-address/webhooks/events --keyfile private.key

注:2つ目のURLパラメータ、http://your-ngrok-forwarding-address/webhooks/events は存在せず、実際に使用することはありませんが、Nexmoアプリケーションを作成する際にはイベントURLを指定する必要があります。

上記のコマンドによる出力には、新しいアプリケーションのIDが含まれる(例:Application created: 39083ced-5275-423d-8a1f-9db528c106b1).電話番号をアプリケーションにリンクするには、このアプリケーションIDが必要です:

nexmo link:app your-nexmo-phone-number your-application-id

アプリケーションはあなたの http://your-ngrok-forwarding-address/webhooks/answerURLにリクエストを送るようになりました。

アプリケーションのテスト

携帯電話からNexmo番号に電話をかけると、最も重要な質問を聞くことができる。

結論

数行のコードで、電話を受けて発信者にメッセージを話すアプリケーションを作成することができます。他にも 他の方法通話相手とやりとりする他の 音声合成マークアップ言語(SSML)タグを使うことができます。

次はどこだ?

もっと詳しく知りたいですか?のドキュメントをご覧ください。 Nexmoデベロッパーのドキュメントをご覧ください。 コールフロー, Voice APIおよび Nexmoコールコントロールオブジェクト.

シェア:

https://a.storyblok.com/f/270183/384x384/f90e9d7feb/paul-ardeleanu.png
Paul Ardeleanuデベロッパー・リレーションズ担当シニア・マネージャー

ポールはNexmoのiOSデベロッパーアドボケイトです。ベテランのソフトウェアエンジニア、トレーナー、講演者であり、プロトタイピング、ベストプラクティス、敏捷性とのバランスに重点を置いたAppleプラットフォームでのデータ駆動型ソリューションを専門としています。