パートナー アカウントを設定する

RBM パートナーとして登録すると、パートナー アカウントが作成されます。パートナー アカウントの設定にアクセスするには、ビジネス コミュニケーション デベロッパー コンソールを開き、[パートナー アカウントの設定] をクリックします。ここでは、次の操作を行えます。

パートナー アカウント情報を更新する

[設定] ページでは、パートナー ID を確認したり、次の情報を更新したりできます。

フィールド 説明
パートナー名 パートナー アカウントの名前
表示名 名前は、携帯通信会社が受け取る RBM 請求レポートに(owner_name フィールドとして)表示されます。携帯通信会社は、この情報を信頼できるパートナーとして識別し、RBM を使用して加入者にリーチする際に正しい請求情報を生成するために使用します。ここで指定する名前は、携帯通信会社のメッセージ サービス契約で使用されている名前と一致している必要があります。
技術関連の連絡窓口

エージェントで技術的な問題が発生した場合、このご連絡先宛に Google から連絡いたします。以下の情報を更新できます。

  • 名前
  • 会社のメールアドレス
  • 電話番号
Webhook これは Webhook エンドポイントの URL です。[設定] をクリックして更新します。 パートナー Webhook を設定すると、その設定はすべてのエージェントに適用されます。個々のエージェントに別の Webhook を使用する場合は、そのエージェントにのみ適用されるエージェント Webhook を構成できます。

ブランドを管理する

RBM パートナーは、ブランドに代わってエージェントを作成できます。

アカウント設定の [ブランド] ページで、パートナー アカウントに関連付けられているブランドの追加、編集、削除を行います。

ブランドを追加

ブランドを追加するには、入力フィールドにブランド名を入力して [追加] をクリックします。

ブランドを編集する

ブランドを編集するには:

  1. ブランド名の横にあるチェックボックスをオンにします。
  2. ボタンをクリックし、[名前を編集] をクリックします。
  3. 編集が完了したら、[完了] をクリックします。

ブランドを削除する

エージェントに関連付けられているブランドは、エージェントがリリースされていない場合でも削除できません。

ブランドを削除するには、ブランド名の横にあるチェックボックスをオンにして、[削除] をクリックします。

ユーザーを管理

パートナー アカウントのユーザーは、[アカウント設定] の [ユーザー] ページで管理します。パートナー アカウントを作成したユーザーには、オーナーのロールが付与されます。新規ユーザーには、マネージャーまたは閲覧者のロールを付与できます。

  • マネージャーは、デベロッパー コンソールのすべての機能にアクセスして、パートナー アカウントに属するすべてのエージェントを管理できます。
  • 閲覧者は、デベロッパー コンソールに読み取り専用アクセス権を持ち、パートナー アカウントに属するすべてのエージェントを表示できます。

ユーザーを追加する

ユーザーを追加するには、入力フィールドにメールアドレスを入力し、ロールを選択します。

新規ユーザーを追加すると、パートナー アカウントにアクセスできるようになったことを知らせるメールが届きます。

ユーザーを削除する

ユーザーを削除するには:

  1. 削除するユーザーを見つけて、テーブルの行にある ボタンをクリックします。
  2. [ユーザーを削除] を選択します。
  3. 削除を確認します。

削除したユーザーには、パートナー アカウントにアクセスできなくなったことを通知するメールが届きます。

オーナーロールを持つユーザーは削除できません。オーナーを変更または削除するには、サポートにお問い合わせください。

ユーザーのロールを変更する

ユーザーのロールを更新するには:

  1. 更新するユーザーを見つけて、テーブルの行にある ボタンをクリックします。
  2. [ロールを編集] を選択します。
  3. プルダウンから新しいロールを選択します。
  4. [保存] をクリックします。

API 呼び出しを認証するサービス アカウントを設定する

RBM API を呼び出すときは、サービス アカウント キーで呼び出しを認証します。このキーを使用すると、ブランドとエージェントを作成、管理し、エージェントとしてメッセージやリクエストを送信できます。サービス アカウントには最大 10 個の鍵を設定できます。

API 呼び出しを安全に認証するには、oauth2l コマンドライン ツールも必要です。

サービス アカウント キーを生成する手順は次のとおりです。

  1. [アカウント設定] で、[サービス アカウント] ページに移動します。
  2. [鍵を作成]、[作成] の順にクリックします。ブラウザでサービス アカウント キーをダウンロードします。

サービス アカウント キーは、安全で非公開の場所に保存します。鍵を一般公開しないでください。このキーは、後で RBM API にアクセスするときに必要になります。

パートナー Webhook を構成する

Webhook は、パートナーが作成した HTTPS コールバックで、エージェントがメッセージとイベントにどのように応答するかを指定します。Webhook を構成したら、メッセージイベントの受信を開始できます。

エージェントごとに異なる Webhook を使用する場合は、パートナーの Webhook をオーバーライドするエージェント レベルの Webhook を設定できます。詳細については、エージェント Webhook を構成するをご覧ください。

パートナー Webhook を構成する手順は次のとおりです。

  1. ビジネス コミュニケーション デベロッパー コンソールを開き、RBM パートナーの Google アカウントでログインします。

  2. [アカウント設定] を開きます。

  3. [RCS ビジネス メッセージの Webhook URL] で [設定] をクリックします。

  4. [Webhook のエンドポイント URL] に、「https://」で始まる Webhook URL を入力します。

  5. clientToken の値をメモします。これは、受信したメッセージが Google から送信されたものであることを確認するために必要です。

  6. 指定された clientToken パラメータを含む POST リクエストを受け取り、secret パラメータのプレーンテキスト値をレスポンス本文として 200 OK レスポンスを送信するように Webhook を構成します。

    たとえば、Webhook が次の本文を含む POST リクエストを受信した場合

    {
      "clientToken":"SJENCPGJESMGUFPY",
      "secret":"1234567890"
    }
    

    Webhook は clientToken 値を確認し、clientToken が正しい場合は、1234567890 をレスポンス本文として 200 OK レスポンスを返します。

    // clientToken from Configure
    const myClientToken = "SJENCPGJESMGUFPY";
    
    // Example endpoint
    app.post("/rbm-webhook", (req, res) => {
      const msg = req.body;
      if (msg.clientToken === myClientToken) {
          res.status(200).send(msg.secret);
          return;
      }
      res.send(400);
    });
    
  7. Developers Console で [確認] をクリックします。RBM が Webhook を確認すると、ダイアログが閉じます。

Webhook 配信エラーの処理と信頼性の高いメッセージ処理については、メッセージ処理をご覧ください。

受信したメッセージを確認する

Webhook は任意の送信者からメッセージを受信できるため、メッセージ コンテンツを処理する前に、受信したメッセージが Google から送信されたものであることを確認する必要があります。

受け取ったメッセージが Google から送信されたものであることを確認する手順は次のとおりです。

  1. メッセージの X-Goog-Signature ヘッダーを抽出します。これは、メッセージ本文ペイロードのハッシュ化された base64 エンコード コピーです。
  2. リクエストの message.body 要素内の RBM ペイロードを Base64 でデコードします。
  3. Webhook のクライアント トークン(Webhook の設定時に指定したトークン)をキーとして、Base64 でデコードされたメッセージ ペイロードのバイト値の SHA512 HMAC を作成し、結果を Base64 でエンコードします。
  4. X-Goog-Signature ハッシュと作成したハッシュを比較します。
    • ハッシュが一致した場合、Google がメッセージを送信したことが確認されます。
    • ハッシュが一致しない場合は、正常なメッセージでハッシュ化プロセスを確認します。

      ハッシュ化プロセスが正しく機能していて、不正に送信されたと思われるメッセージが届いた場合は、Google までご連絡ください

Node.js

  if ((requestBody.hasOwnProperty('message')) && (requestBody.message.hasOwnProperty('data'))) {
    // Validate the received hash to ensure the message came from Google RBM
    let userEventString = Buffer.from(requestBody.message.data, 'base64');
    let hmac = crypto.createHmac('sha512', CLIENT_TOKEN);
    let data = hmac.update(userEventString);
    let genHash = data.digest('base64');
    let headerHash = req.header('X-Goog-Signature');

    if (headerHash === genHash) {
      let userEvent = JSON.parse(userEventString);

      console.log('userEventString: ' + userEventString);
      handleMessage(userEvent);
    } else {
      console.log('hash mismatch - ignoring message');
    }
  }

  res.sendStatus(200);
  

次のステップ

パートナー アカウントが設定されたので、最初のエージェントを作成しましょう。