Chat App Message Service は、テンプレートの作成、単一メッセージの送信、メッセージの一括送信を行うためのAPIを提供します。このトピックでは、WhatsAppを例として使用します。他のチャネルタイプも同様のプロセスです。
次の方法でChat App Message Service API を呼び出すことができます。
-
Alibaba Cloud OpenAPI Portal
インタラクティブなインターフェイスを通じてAPIのデバッグを行い、SDK リクエストの例を取得します。Alibaba Cloud を初めて使用する開発者に最適です。
-
SDKは、Java、Go、PHP、Pythonなど、複数のプログラミング言語で利用できます。SDK を使用してChat App Message Service を統合することで、開発効率が向上します。
-
カスタムカプセル化 (非推奨)
Alibaba Cloud SDK は、リクエスト署名、タイムアウト、リトライを処理します。開発コストを削減するために、SDKの使用を推奨します。Raw API コールを行う必要がある場合は、「SendChatappMessage」および「リクエスト構文と署名メソッド V3」をご参照ください。
SDK を使用して Chat App Message Service を統合するには、OpenAPI Portal で API を確認した後、以下の手順に従って Chat App Message Service を統合します。
事前準備
|
事前準備 |
説明 |
関連ドキュメント |
|
Alibaba Cloud アカウントの登録 企業実名認証の完了 |
|
|
|
サービスの有効化 |
Chat App Message Service コンソールにログインし、サービスを有効化します。 |
- |
|
ユーザー権限の設定 |
Alibaba Cloud アカウントは広範な権限を持ちます。API コールや日常の操作にはRAM ユーザーを使用してください。 RAM コンソールにログインし、RAM ユーザー名をクリックすることで、ユーザーの権限を確認できます。API コールを行うRAM ユーザーにChat App Message Service で必要な権限が付与されていることを確認してください。
|
|
|
AccessKey ID |
RAM コンソールにログインし、RAM ユーザー名をクリックして AccessKey ID を表示します。 |
|
|
AccessKey シークレット |
AccessKey シークレットは作成時にのみ表示されます。バックアップを保存していない場合は、新しいAccessKey ペアを作成してください。 |
環境設定
この例では Java を使用します。他の言語およびSDKのインストールについては、「インストール方法」をご参照ください。
-
Java 8 以降がインストールされていることを確認してください。詳細な手順については、「WindowsでJava開発環境をセットアップする」をご参照ください。
-
Maven 依存関係を設定してSDKをインストールします。
Maven プロジェクトの
pom.xmlで、<dependencies>に以下を追加し、the-latest-versionを最新のバージョン番号に置き換えます。その後、Maven の依存関係を再読み込みします。<dependency> <groupId>com.aliyun</groupId> <artifactId>alibabacloud-cams20200606</artifactId> <!-- 'the-latest-version' を最新のバージョン番号に置き換えてください: https://mvnrepository.com/artifact/com.aliyun/alibabacloud-cams20200606 --> <version>the-latest-version</version> </dependency> -
環境変数の設定:コードにAccessKey ペアをハードコーディングしないように、認証情報を環境変数に保存します。設定後、IDE、コマンドラインインターフェイス、およびその他のアプリケーションを再起動して、新しい変数を読み込ませます。
-
プロキシの設定 (オプション)。リクエストをプロキシ経由でルーティングするには、SDKでプロキシを設定します。「プロキシ設定」をご参照ください。
APIの基本情報
|
APIバージョン |
|
|
RPC |
|
|
(Endpoint) |
パブリックエンドポイント:cams.ap-southeast-1.aliyuncs.com |
ワークフロー
-
チャネルの作成:チャネル管理ページに移動します。
-
チャネルは、メッセージを送信するために使用される経路の種類です。サポートされているチャネル:WhatsApp、Viber、Messenger、Instagram、およびEメール。
-
各チャネルは、対応するメッセージタイプのみに対応しています。
-
-
WABAの登録とバインド:ChatappBindWaba API を呼び出して WhatsApp ビジネスアカウント (WABA) をバインドします。
-
このAPIを呼び出す前に、登録済みの WhatsApp ビジネスアカウント (WABA) が必要です。WABA は API 経由では登録できません。Chat App Message Service コンソールから登録してください。
-
商用 WhatsApp メッセージを送信するには、WhatsApp ビジネスアカウント (WABA) が必要です。検証済みの WABA にはバッジが表示され、顧客の信頼を高め、ブランドイメージを向上させると同時に、不正なメッセージによる干渉を減らします。
-
-
番号の追加:AddChatappPhoneNumber API を呼び出して番号を追加します。この電話番号は WhatsApp メッセージの送信に使用されます。
-
ChatappSyncPhoneNumber API を使用すると、バインドされ承認された WABA の番号をビジネスマネージャ (BM) プラットフォームと同期できます。
-
他の BSP から Alibaba Cloud に電話番号を移行できます。移行された番号は、表示名、品質評価、メッセージング制限、公式ビジネスアカウントのステータス、および以前に承認されたすべての高品質メッセージテンプレートを保持します。移行を開始するには、CreateChatappMigrationInitiate API を使用します。
-
-
番号の検証:GetChatappVerifyCode API を呼び出して番号の検証コードを取得します。次に、ChatappVerifyAndRegister API を使用して番号を検証します。検証後、GetPhoneNumberVerificationStatus API を使用して検証ステータスを確認します。
-
移行した電話番号を使用している場合は、GetMigrationVerifyCode API を呼び出して検証コードを取得します。次に、ChatappMigrationVerified API を呼び出して移行した番号を検証します。
-
-
テンプレートの作成と設計:CreateChatappTemplate API を呼び出してテンプレートを作成します。テンプレートが作成されると、自動的に審査に提出されます。次に、GetChatappTemplateDetail API を使用してテンプレートの審査詳細を照会します。
-
提出後、審査ステータスを監視してください。審査は通常5分以内に完了しますが、24時間以上かかる場合もあります。
-
WhatsApp メッセージテンプレートのカテゴリは、審査中に自動的に変更されることがあります。CreateChatappTemplate API を呼び出す際に、CategoryChangePausedをtrueに設定すると、カテゴリが変更されたときに送信を一時停止できます。「WhatsAppメッセージテンプレートのカテゴリ変更と送信制御」をご参照ください。
-
-
メッセージの送信:SendChatappMessage または SendChatappMassMessage API を呼び出してメッセージを送信します。
-
送信前にアカウント残高が十分であることを確認してください。「料金」をご参照ください。
-
-
メッセージ送信詳細の表示:ChatAppStatusコールバック (Simple Message Queue | HTTP URL) を通じて、送信済みメッセージのレポートを受信できます。
-
モバイル発信 (MO) メッセージの受信:ChatAppInboundコールバック (Simple Message Queue | HTTP URL) を通じて、インバウンドメッセージを受信できます。
API操作の詳細については、「API概要」をご参照ください。
サンプルコード
次の例では、SendChatappMessage API を呼び出してメッセージを送信します。コメントで示されているようにパラメーターを入力してください。
// このファイルは自動生成されます。編集しないでください。ありがとうございます。
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* <b>description</b> :
* <p>認証情報を使用してクライアントを初期化します。</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.cams20200606.Client createClient() throws Exception {
// 本番環境では、AccessKey をハードコーディングしない、より安全な方法を推奨します。詳細は、https://www.alibabacloud.com/help/doc-detail/2542825.html をご参照ください。
com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
.setCredential(credential);
// サービスエンドポイント。詳細は、https://api.alibabacloud.com/product/cams をご参照ください。
config.endpoint = "cams.ap-southeast-1.aliyuncs.com";
return new com.aliyun.cams20200606.Client(config);
}
public static void main(String[] args_) throws Exception {
com.aliyun.cams20200606.Client client = Sample.createClient();
java.util.Map<String, String> templateParams = TeaConverter.buildMap(
// これらをテンプレートの変数名と値に置き換えてください。
new TeaPair("name", "田中太郎"),
new TeaPair("sex", "男性")
);
com.aliyun.cams20200606.models.SendChatappMessageRequest sendChatappMessageRequest = new com.aliyun.cams20200606.models.SendChatappMessageRequest()
// メッセージ送信用のパラメーター。
.setTemplateParams(templateParams)
.setTemplateCode("XXXXXXXXXXX")
.setChannelType("whatsapp")
.setType("template")
.setLanguage("en")
.setFrom("XXXXXXXX")
.setTo("XXXXXXXX")
.setCustSpaceId("XXXXXXXXXXX");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// このコードをコピーして実行する場合は、APIの戻り値をご自身で出力してください。
client.sendChatappMessageWithOptions(sendChatappMessageRequest, runtime);
} catch (TeaException error) {
// これは出力およびデモ目的のみです。プロジェクトでは例外を慎重に処理し、無視しないでください。
// エラーメッセージ。
System.out.println(error.getMessage());
// 診断URL。
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// これは出力およびデモ目的のみです。プロジェクトでは例外を慎重に処理し、無視しないでください。
// エラーメッセージ。
System.out.println(error.getMessage());
// 診断URL
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}
OpenAPI Portalにアクセスすると、他の言語での完全なSDKの例を確認できます。Raw API コールを行うには、「SendChatappMessage」および「リクエスト構文と署名メソッド V3」をご参照ください。
メッセージ配信失敗のトラブルシューティング
API を呼び出してメッセージを送信した後、受信者がメッセージを受信しない場合は、次の手順で問題をトラブルシューティングします。
-
WABA ビジネス API を呼び出したことの確認:個人の WhatsApp リンク (
api.whatsapp.com/send) でテストするのではなく、SendChatappMessage API を呼び出してメッセージを送信したことを確認してください。個人の WhatsApp リンクは WhatsApp ビジネスアカウント (WABA) を経由しないため、API コールがメッセージを配信したかどうかを検証できません。 -
24 時間のカスタマーサービスウィンドウが開いていることの確認:WhatsApp Business では、エンドユーザーが最初にビジネスにメッセージを送信する必要があります。その後、ビジネスはそのユーザーに次の 24 時間のカスタマーサービスウィンドウ内でメッセージを送信できます。エンドユーザーがまだメッセージを送信していない場合は、個人の WhatsApp アプリから WABA の電話番号に任意のメッセージを送信してウィンドウを開き、再度 API を呼び出してください。
-
メッセージワークベンチでの配信ステータスの確認:Chat App Message Service コンソールにログインし、[メッセージワークベンチ] に移動します。[online phone number selector] で、メッセージの送信に使用した WABA の電話番号を選択します。検索ボックスに受信者の電話番号を入力し、Enter キーを押して番号を連絡先として追加します。その後、その会話の送受信メッセージのステータスを表示できます。
-
その他の一般的な原因の確認:メッセージがまだ配信されない場合は、次の項目を順番に確認してください。
-
メッセージテンプレートの承認ステータス が審査を通過しているかどうか。
-
送信元の電話番号が検証を完了しているかどうか。
-
アカウント残高が十分であるかどうか。
-
24 時間のカスタマーサービスウィンドウが期限切れになっていないかどうか。
-
具体的なエラーについては、「SendChatappMessage」および「リクエスト構文と署名メソッド V3」で説明されているAPIエラーコードをご参照ください。