sgcWebSockets 2022.3.0 より、スポンサードメッセージがサポートされました。スポンサードメッセージには Telegram 1.8.0+ が必要なため、Telegram ライブラリはこの機能をサポートするよう更新されました。
Telegram のスポンサードメッセージは 1000 人以上のサブスクライバーがいる大型パブリック 1 対多チャネルに表示され、160 文字に制限されています。スポンサードメッセージは、表示されるパブリックチャネルのトピックのみに基づいています。
これは、広告表示のためにユーザーデータは収集・分析されないことを意味し、特定のチャネルを閲覧するすべての Telegram ユーザーは同じスポンサードメッセージを目にします。
スポンサードメッセージの取得
ユーザーがチャネルを開くたびに、そのチャネルで利用可能なスポンサードメッセージを受信するために channels.getSponsoredMessages を呼び出す必要があります。結果は 5 分間キャッシュしなければなりません。
スポンサードメッセージの表示
スポンサードメッセージはチャネル内の他のすべての投稿の下、ユーザーが最後のメッセージを過ぎてさらにスクロールした後に表示されなければなりません。from_id フィールドで指定されたプロモーション対象のチャネルまたはボットをメッセージの作成者として表示する必要があります。メッセージの下部には以下のいずれかのボタンも含める必要があります:
- ボットを表示 — ボットをプロモーションする場合。ボタンをタップするとボットとのチャットが開きます。
start_paramが指定されている場合、アプリはディープリンクメカニズムを使用してボットを開く必要があります。 - チャネルを表示 — チャネルをプロモーションする場合。ボタンをタップするとチャネルが開きます。
- 投稿を表示 — チャネルをプロモーションし、
channel_postが指定されている場合。ボタンをタップすると特定のチャネル投稿が開きます。
サンプル
以下に、sgcWebSockets ライブラリを使用してスポンサードメッセージをリクエストして表示するサンプルを示します。
//Send a request to the channel asking if there are sponsored messages available, just call the method GetChatSponsoredMessage.
oTelegram := TsgcTDLib_Telegram.Create(nil);
oTelegram.Telegram.API.ApiHash := 'ABCDEFGHIJKLMN';
oTelegram.Telegram.API.ApiId := '1234';
oTelegram.PhoneNumber := '008745744155';
oTelegram.Active := true;
oTelegram.getChatSponsoredMessage('100');
//If the chat has sponsored messages, the event OnMessageSponsored is called with the content of the Sponsored message.
//If there are no messages, a 404 error is returned.
procedure(Sender: TObject; MessageSponsored: TsgcTelegramMessageSponsored);
begin
DoLog(MessageSponsored.Text);
end;
//Call the method ViewMethod after the Sponsored Messages has been shown to the user.
oTelegram.ViewMessage('100', '54653256245');
