WhatsApp Delphi コンポーネント

· コンポーネント

sgcWebSockets の WhatsApp コンポーネントは、Delphi チームがスケールを問わず即時かつパーソナライズされた会話を実現できるようにします。CRM 統合、ヘルプデスクポータル、トランザクション通知サービスなど、いずれのユースケースでも、WhatsApp Business メッセージングへの安全で強靭かつ完全サポートの橋渡しを提供します。本記事では、本番対応のチャットフローを迅速に実現するために必要なビジネス価値と技術的詳細を組み合わせて解説します。

ビジネスインパクトの概要

アーキテクチャ概要

本コンポーネントは WhatsApp Business API の REST エンドポイントと WebSocket コールバックを Delphi フレンドリーなインターフェイスにカプセル化します。トークンの更新、メッセージフォーマット(テキスト、テンプレート、メディア)、非同期配信レポートを管理します。内部的には sgcWebSockets のコアトランスポートに依存しているため、フレームワーク全体で使用されているのと同じ TLS、再接続、スレッドモデルの恩恵を受けられます。

前提条件

Delphi でのコンポーネント設定

TsgcWhatsAppClient コンポーネントをデータモジュールまたはサービスフォームにドロップします。必須プロパティはオブジェクトインスペクターで設定するか、初期化時のコードで設定します。

デザイン時設定

  1. PhoneNumberID に Meta が提供する送信者の電話番号 ID を入力します。
  2. AccessToken を割り当て、署名済みリクエストを強制する場合はオプションで AppSecretProof も設定します。
  3. AutoReconnect を true に設定して WebSocket チャネルを維持します。
  4. 配信確認と受信チャットを処理するために OnMessageStatus および OnIncomingMessage イベントをアタッチします。

procedure TdmMessaging.DataModuleCreate(Sender: TObject);
begin
  sgcWhatsAppClient.BaseURL := 'https://graph.facebook.com/v18.0/';
  sgcWhatsAppClient.PhoneNumberID := '123456789012345';
  sgcWhatsAppClient.AccessToken := TSecretStore.FetchToken('WA_ACCESS');
  sgcWhatsAppClient.WebhookVerifyToken := 'MyDelphiWebhook';
  sgcWhatsAppClient.AutoReconnect := True;
  sgcWhatsAppClient.Connect;
end; 

メッセージの送信

高レベルのシナリオでは SendText および SendTemplate ヘルパーメソッドを使用するか、高度なペイロードには Messages コレクションに直接アクセスします。

procedure TdmMessaging.SendWelcomeMessage(const ADestination: string);
var
  LMessage: TsgcWAOutboundMessage;
begin
  LMessage := sgcWhatsAppClient.Messages.Add;
  LMessage.ToPhone := ADestination;
  LMessage.TypeMessage := watText;
  LMessage.Text.Body := 'Welcome to our premium support channel!';
  sgcWhatsAppClient.SendMessage(LMessage);
end; 

受信と自動応答

本コンポーネントには sgcWebSockets の HTTP サーバー機能を活用した組み込みの Webhook リスナーが含まれています。Webhook パスを公開エンドポイントにマップし、イベントハンドラー内で返信を処理します。

procedure TdmMessaging.sgcWhatsAppClientIncomingMessage(Sender: TObject;
  const AMessage: TsgcWAInboundMessage);
begin
  if AMessage.Text.Body.ToLower.Contains('pricing') then
    sgcWhatsAppClient.SendText(AMessage.FromPhone,
      'Ask about our enterprise bundles for priority SLA and analytics dashboards.')
  else
    QueueForAgent(AMessage);
end; 

高度な設定

WhatsApp コンポーネントを使用する利点