https://d226lax1qjow5r.cloudfront.net/blog/blogposts/receive-call-swift-dr/receive-call-swift.jpg

Voice APIとSwiftで電話を受ける

最終更新日 May 12, 2021

所要時間:7 分

このチュートリアルでは、電話を受け取ることができる Swift アプリケーションを作成します。 VaporWebフレームワークと Nexmo Voice API を使って電話を受けることができる Swift アプリケーションを作成します。.このチュートリアルは MacOS と Ubuntu の両方で行うことができます。

完全なソリューションについては Githubレポ.

前提条件

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.

This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.

  • 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プラットフォームでのデータ駆動型ソリューションを専門としています。