https://d226lax1qjow5r.cloudfront.net/blog/blogposts/using-vonage-apis-with-drupal/blog_vonageapi_drupal_1200x600.png

DrupalでVonage APIを使う

最終更新日 December 10, 2020

所要時間:1 分

前提条件

  • PHP 7.3以上

  • SQLite 3.26以上またはMySQL 5.7.8以上

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.

Drupalのインストール

Drupal 8の導入により、以下の方法でDrupalをインストールできるようになりました。 コンポーザーを使ってインストールできるようになりました。Composerは、ウェブサイトを最新の状態に保つだけでなく、ウェブサイトの依存関係をすべて処理しますが、基本的なDrupalのインストールにも使用できます。プロジェクトとして drupal/recommended-projectリポジトリをクローンしてみましょう:

$ composer create-project drupal/recommended-project vonage-and-drupal

Composerはリポジトリをダウンロードし、アプリケーションの依存関係を自動的にプルダウンします。ディレクトリに移動して vonage-and-drupal/ディレクトリに移動し、インストールを続行します。

DrupalはApacheのhttpdやNginxのようなウェブサーバーの後ろから実行できますが、PHPには組み込みの開発サーバーがあります。別のターミナルウィンドウを開き、Drupalのコードをダウンロードした場所にcdし、サーバーを立ち上げます:

$ php -S localhost:3000 -t web

ウェブブラウザを開いて http://localhost:3000にアクセスすると、Drupalのインストールフォームが表示されます!

drupal install

今回は基本的なインストールを行うので、インストール・ウィザードに従って以下のオプションを選択する:

  1. 言語を選択し、"Save and continue "をクリックします。今回はデフォルトの "English "を選択します。

  2. Standard "インストールプロファイルを選択し、"Save and continue "をクリックします。

  3. データベースのタイプに "SQLite "を選択し、残りのオプションはデフォルトのままにしておきます。Save and continue "をクリックします。

  4. Configure Site "には、サイト名、Eメール、ユーザー名、パスワードを入力してください。Save and continue "をクリックしてください。

Drupalがインストールを終了します。あなたは自動的にログインし、遊び始める準備ができます!

PHP 7.4 あるいは 8.0 を使用している場合、SQLite のバージョンが低すぎるというエラーが発生するかもしれません。PHPは7.4からSQLiteをアンバンドルし、オペレーティングシステムにインストールされているものを使用します。Ubuntu 18.04や古いバージョンのFedoraやCentOSを使用している場合、SQLiteを使用してDrupal 9をインストールできない可能性があります。このような場合は、SQLiteの代わりにMySQLやMariaDBをデータベースとして使用することをお勧めします。

drupal is installed

VonageのAPIをインストールする

Drupalのインストールができたので、Vonage APIとどのようにやり取りするかを決めることができます。Drupal は組み込みの \Drupal::httpClient()を使用してHTTPリクエストを行うことができますが、開発者はリクエストのたびにAPIエンドポイント、JSON構造、認証を考えなければなりません。これは最も困難な実装オプションです。

Vonage は PHP ライブラリを提供しており、各リクエストの定型的なコードの多くを助けることができます。このライブラリはほとんどの PHP アプリケーションで動作します。 \Vonage\Clientオブジェクトを作成し、認証情報を提供するだけでよいからです。このライブラリはDrupalでも問題なく動作しますが、厄介な点は作成したオブジェクトを他のシステムからアクセスできるようにすることです。VonageクライアントをDrupalのサービスレイヤーにプッシュする小さなモジュールを書く必要があります。

これを支援するために、Vonageは認証情報を追加するための管理インターフェイスを提供し、Vonage APIクライアントを作成し、サービスシステムに登録するモジュールを作成しました。ソースコードを見たい場合は、以下から入手できる。 https://github.com/Nexmo/vonage-php-drupal-module.また、Composer経由でインストールできるライブラリとしても提供しています。 vonage/vonage_drupal.

Composerを使って依存関係を処理しているので、ターミナルに戻ってウェブサイトにパッケージを追加できる:

$ composer require vonage/vonage_drupal

Composer はいくつかの依存関係をダウンロードします。 web/modules/contrib/vonage_drupal.ダウンロードが完了したら、"Extend "ページに行き、"Vonage API SDK "モジュールを有効にして、モジュールを有効にする必要がある。検索するか、"Communications "セクションまでスクロールダウンしてください。しばらくするとページが更新され、"Module Vonage API SDK has been enabled. "という成功メッセージが表示されます!

Configuration "ページに行き、"SYSTEM "見出しの下にある "Vonage API Settings "をクリックすることで、モジュールを設定することができます。このページで、モジュールがSDK Clientをセットアップするために使用する2組の認証情報を設定することができます。ほとんどの Vonage API は Vonage API Secret と Key を使う傾向があります。 Vonage ダッシュボード.Voice APIのように秘密鍵認証を使用するAPIを使用している場合は、そのセクションを展開し、アプリケーションIDと秘密鍵を入力することができます。

認証情報をテストしたい場合は、configureページの "Vonage SMS API Testing "または "Vonage Voice API Testing "タブを使用できます。問題があれば、遭遇したどんなエラーでもシステムが返すはずです。とりあえず、API SecretとKeyを入力し、設定を保存しましょう。

Vonage API SDK の使用

Vonage Drupalモジュールは自動的にDrupalサービスコンテナシステムを通してクライアントオブジェクトを設定し、利用可能にします。この機能はカスタムモジュールにSDKをインジェクトできることを意味します。小さなモジュールを作ってみましょう。 drushを使ってモジュールの雛形を作成します。以下のコマンドを実行して、プロジェクトのためにdrushをインストールし、モジュールを作成するための簡単な質問を実行します:

$ composer require --dev drush/drush
$ vendor/bin/drush generate module
  1. モジュール名ボンテージ・ハロー・ワールド

  2. マシン名フォネージュ_ヘロ_ワールド

  3. モジュールの説明Vonage API をテストするモジュール

  4. パッケージカスタム

  5. 依存関係依存関係はありません。

  6. 以外のすべての質問に「いいえ」と答えてください:

    1. コントローラーを作りたいですか?

このコマンドは web/modules/vonage_hello_worldに新しいモジュールを作成します!

エディターで web/modules/vonage_hello_world/src/Controller/VonageHelloWorldController.phpをエディタで開いてください。SDKをControllerに取り込むために最初に必要なことは create()メソッドをオーバーライドすることです。このメソッドはDrupalがコントローラを作成する際に使用するもので、サービスロケータを渡します。そのため、サービスロケータを渡します。 create()メソッドをオーバーライドしましょう:

public static function create(\Symfony\Component\DependencyInjection\ContainerInterface $container) {
    $client = $container->get(\Vonage\Client::class);
    return new static($client);
}

メソッドの引数としてコンテナを渡すと、クラス名を使ってコンテナからVonage APIクライアントを取り出すことができる。内部的には、先ほど入力したクレデンシャルを受け取って使用可能なオブジェクトを生成するファクトリをコールしています。このオブジェクトを新しいコントローラに渡すことができる。そういえば __construct()メソッドと、それを格納するプロパティを追加しましょう。

protected $client;

public function __construct(\Vonage\Client $client) {
    $this->client = $client;
}

モジュールのビルドに drushコマンドを使ってモジュールをビルドしたので、 ルートにアタッチされたメソッドがコントローラに自動的に追加されました。メソッドを編集して build()メソッドを編集して、携帯電話に SMS を送信するコールを追加します。そのためには SMSを送信するスニペットをもとに、 SMS を送信するために渡したクライアントを使用します。以下の例のように build()メソッドを以下の例のように編集します。必ず TO_NUMBERをあなたの携帯電話番号に、そして VONAGE_NUMBERをVonageに登録している番号に置き換えてください。Drupalがページをキャッシュしないように、誰かがこのルートにアクセスするたびにページのキャッシュを無効にします。

public function build() {
    \Drupal::service('page_cache_kill_switch')->trigger();

    $response = $this->client->sms()->send(
      new \Vonage\SMS\Message\SMS(
        'TO_NUMBER',
        'FROM_NUMBER', 
        'This was sent from Drupal!'
      )
    );

    $status = $response->current()->getStatus();
    if ($status == 0) {
      $message = "The message was sent successfully";
    } else {
      $message = "The message failed with status: " . $status;
    }
    $build['content'] = [
      '#type' => 'item',
      '#markup' => $this->t($message),
    ];

    return $build;
}

DrupalからSMSメッセージを送信するのに必要なものはすべてインストールされ、設定されています。Drupal Admin UIに戻り、"Extend "ページに行き、"Vonage Hello World "を見つけてチェックボックスを選択します。Install "をクリックしてカスタムモジュールをインストールします。しばらくすると、モジュールのインストールが完了したという成功メッセージが表示されます。

デフォルトでは drushでコントローラのルートを設定します。 /vonage-hello-world/example.に向かいます。 http://localhost:3000/vonage-hello-world/example.メッセージは正常に送信されました」という通常のDrupalノードが表示され、あなたの携帯電話はコントローラで設定したSMSメッセージを受信するはずです。このページを更新すると、出力キャッシュを無効にしたため、SMSが再度送信されます。

sms message is sent

さらに読む

ここから、Vonage PHP SDKの全機能が利用可能になり、カスタムモジュール内で遊ぶことができます。私たちの PHPコードスニペットをご覧ください。VonageのほぼすべてのAPIでSDKを使用することができます。

このデモのサンプルコードは、以下のサイトにあります。 https://github.com/nexmo-community/vonage-php-sdk-drupal-9.

シェア:

https://a.storyblok.com/f/270183/384x384/3bc39cbd62/christankersley.png
Chris Tankersleyデベロッパー・リレーションズ・ツーリング・マネージャー

クリスはデベロッパー・リレーションズ・ツーリング・マネージャーで、お気に入りのツールを開発するチームを率いています。彼は15年以上、クライアントワークからビッグデータ、大規模システムに至るまで、様々な言語と種類のプロジェクトでプログラミングをしてきました。オハイオ州に住み、家族と過ごしたり、ビデオゲームやTTRPGゲームをしたりしている。