赞助信息
收到赞助信息
sponsoredMessage#7dbf8673 flags:# recommended:flags.5?true can_report:flags.12?true random_id:bytes url:string title:string message:string entities:flags.1?Vector<MessageEntity> photo:flags.6?Photo media:flags.14?MessageMedia color:flags.13?PeerColor button_text:string sponsor_info:flags.7?string additional_info:flags.8?string min_display_duration:flags.15?int max_display_duration:flags.15?int = SponsoredMessage;messages.sponsoredMessages#ffda656d flags:# posts_between:flags.0?int start_delay:flags.1?int between_delay:flags.2?int messages:Vector<SponsoredMessage> chats:Vector<Chat> users:Vector<User> = messages.SponsoredMessages;---functions---messages.getSponsoredMessages#3d6ce850 flags:# peer:InputPeer msg_id:flags.0?int = messages.SponsoredMessages;
每次用户打开频道或与机器人聊天时,都必须调用messages.getSponsoredMessages来接收该频道或机器人可用的赞助消息。结果必须缓存5 分钟。
更多关于 Telegram 赞助消息的信息
获取赞助视频广告
sponsoredMessage#7dbf8673 flags:# recommended:flags.5?true can_report:flags.12?true random_id:bytes url:string title:string message:string entities:flags.1?Vector<MessageEntity> photo:flags.6?Photo media:flags.14?MessageMedia color:flags.13?PeerColor button_text:string sponsor_info:flags.7?string additional_info:flags.8?string min_display_duration:flags.15?int max_display_duration:flags.15?int = SponsoredMessage;messages.sponsoredMessages#ffda656d flags:# posts_between:flags.0?int start_delay:flags.1?int between_delay:flags.2?int messages:Vector<SponsoredMessage> chats:Vector<Chat> users:Vector<User> = messages.SponsoredMessages;---functions---messages.getSponsoredMessages#3d6ce850 flags:# peer:InputPeer msg_id:flags.0?int = messages.SponsoredMessages;
每次用户开始全屏观看频道视频时,必须调用messages.getSponsoredMessagesmsg_id并将消息 ID 设置为视频的 ID,以便在视频播放时接收赞助消息,这些消息将显示在视频播放器上的一个小框中。
返回的sponsoredMessage始终是仅包含文本的广告,并设置了`min_display_durationand`max_display_duration标志,并且包含messages.sponsoredMessages构造函数始终会设置`start_delayand`between_delay标志。
返回的视频广告必须按顺序显示,每个广告持续sponsoredMessagemax_display_duration秒,然后自动隐藏。
用户也可以在赞助消息播放min_display_duration几秒钟 后手动隐藏视频广告。
第一个广告必须在messages.sponsoredMessagesstart_delay播放视频.秒后显示。
后续广告必须在前一个广告隐藏后几秒钟内显示between_delay,无论是自动隐藏还是用户手动隐藏。
在全屏播放器中,通过向左或向右滑动切换到频道上的下一个或上一个视频不应触发新的messages.getSponsoredMessages调用,也不应中断任何计时器:实际上,应将广告视为与全屏播放器关联,而不是与特定视频关联(只要我们在同一频道上播放视频,情况就是如此)。
当用户暂停视频时,暂停所有计时器,例如假设:
- start_delay=5
- between_delay=10
- min_display_duration=5所有广告
- max_display_duration=10所有广告
以及以下时间线:
- T=0用户开始播放视频
- T=3用户暂停视频
- T=10用户恢复视频播放
- T=12显示第一个广告
- T=15用户暂停了视频
- T=20用户恢复视频播放
- T=22允许用户隐藏广告
- T=25用户暂停了视频
- T=30用户恢复视频播放
- T=32自动隐藏广告
- T=35用户暂停了视频
- T=40用户恢复视频播放
- T=47显示下一个广告
获取赞助搜索结果
contacts.found#b3134d9d my_results:Vector<Peer> results:Vector<Peer> chats:Vector<Chat> users:Vector<User> = contacts.Found;contacts.sponsoredPeersEmpty#ea32b4b1 = contacts.SponsoredPeers; contacts.sponsoredPeers#eb032884 peers:Vector<SponsoredPeer> chats:Vector<Chat> users:Vector<User> = contacts.SponsoredPeers;sponsoredPeer#c69708d3 flags:# random_id:bytes peer:Peer sponsor_info:flags.0?string additional_info:flags.1?string = SponsoredPeer;---functions---contacts.search#11f812d8 q:string limit:int = contacts.Found;contacts.getSponsoredPeers#b6c8c393 q:string = contacts.SponsoredPeers;
客户还必须支持赞助的同行,以便在通过全局搜索功能搜索同行时显示,以及与contacts.search一起使用。
应该调用contacts.getSponsoredPeers,返回一个赞助对等节点列表, 该列表将在contacts.found的结果之后、contacts.foundmy_results的结果之前显示。results
赞助的同伴应与赞助的消息采取相同的处理方式:
- 如果设置了sponsoredPeer.sponsor_info或sponsoredPeer.additional_info标志,则必须存在一个额外的“赞助商信息”标签,点击该标签将显示标志的内容。
- 当它们滚动到视图中时,应按照此处的规定调用messages.viewSponsoredMessage»,并将受赞助的 Peer传递random_id给random_id参数。
- 应通过调用messages.clickSponsoredMessage来报告点击事件,无需设置任何标志,并将sponsoredPeer传递random_id给random_id参数。
- 可以使用messages.reportSponsoredMessage报告赞助搜索结果,按照通常的流程 »,将sponsoredPeer传递random_id给random_id参数。
如上所述,受赞助的Peerrandom_id可以传递给与赞助消息相关的方法。
显示赞助商信息
赞助信息必须按以下方式显示:
-
在频道中,赞助信息必须显示在频道内所有其他帖子下方,用户向下滚动页面直至看到最后一条消息后才能看到。
赞助频道消息具有以下特点:- 标题(包含在title)
- 一段文本(包含在message+中entities)
- 可选媒体(包含在内media,点击它应该在url如下所示的 URL 中打开;应该有一个单独的按钮可以全屏展开视频,点击该按钮不应该打开链接url)。
-
按钮(标签在button_text)点击后,会在应用中打开 URLurl。
打开 URL 前应显示确认提示,除非 URL 的主机部分与以下正则表达式匹配:(^|\\.)(telegram\.(org|me|dog)|t\.me|te\.?legra\.ph|graph\.org|fragment\.com|telesco\.pe)$,在这种情况下,应直接打开 URL 而无需确认(如果是深度链接 »,则应直接在应用中打开,无需通过浏览器)。 - recommended如果设置了该标志,则消息应标记为“推荐”而不是“赞助” 。
- 如果photo设置了该标志,则应使用该标志为赞助消息显示个人资料照片气泡,例如在群组中发送的消息。
- 如果设置了sponsor_info或additional_info标志,则消息上下文菜单(单击按钮时弹出的菜单)中必须存在一个额外的“赞助商信息”菜单项,单击该菜单项将显示标志的内容。
-
在聊天机器人中,它们必须显示在聊天窗口上方,类似于操作栏。聊天机器人广告具有以下特点:
- 标题(包含在title):必须在本地添加蓝色“广告”前缀,如果recommended设置了标志,则添加“推荐”前缀。
- 一段文本(包含在message+中entities)
-
当点击广告操作栏时,客户端应该在应用程序中打开 URLurl。
在打开 URL 之前应该显示确认提示,除非 URL 的主机部分与以下正则表达式匹配:(^|\\.)(telegram\.(org|me|dog)|t\.me|te\.?legra\.ph|graph\.org|fragment\.com|telesco\.pe)$,在这种情况下,URL 应该无需确认即可打开(如果是深度链接 »,则应该直接在应用程序中打开,而无需通过浏览器)。
如果photo设置了该标志,则应在操作栏的右侧显示其缩略图大小的版本。
如果设置,赞助消息/操作栏应使用消息强调色»中指定的color。
统计赞助信息浏览量
---functions---messages.viewSponsoredMessage#269e3643 random_id:bytes = Bool;
当广告的全部文本显示在屏幕上(频道广告的按钮除外)后,必须使用赞助消息的文本调用messages.viewSponsoredMessage 。random_id
点击赞助信息
---functions---messages.clickSponsoredMessage#8235057e flags:# media:flags.0?true fullscreen:flags.1?true random_id:bytes = Bool;
根据用户的操作,必须遵循以下逻辑。
- 点击赞助消息中的链接:调用messages.clickSponsoredMessage,打开链接。
- 点击机器人广告栏:调用messages.clickSponsoredMessage,打开链接。
- 通过关联的按钮打开赞助聊天或赞助网站:调用messages.clickSponsoredMessage,打开聊天。
- 通过赞助消息名称、赞助消息照片或赞助消息中的提及打开赞助聊天:调用messages.clickSponsoredMessage,打开聊天。
- 点击媒体(仅限无声照片和视频):调用messages.clickSponsoredMessage并media设置标志,打开链接。
- 点击媒体(仅限有声音的视频):调用messages.clickSponsoredMessage并media设置标志,以全屏模式打开视频(暂不打开链接)。
- 点击媒体(仅限全屏有声视频):调用messages.clickSponsoredMessage并设置media标志fullscreen,打开链接。
- 当赞助视频全屏显示时,点击按钮:调用messages.clickSponsoredMessage并fullscreen设置标志,打开链接。
举报赞助信息
sponsoredMessage#7dbf8673 flags:# recommended:flags.5?true can_report:flags.12?true random_id:bytes url:string title:string message:string entities:flags.1?Vector<MessageEntity> photo:flags.6?Photo media:flags.14?MessageMedia color:flags.13?PeerColor button_text:string sponsor_info:flags.7?string additional_info:flags.8?string min_display_duration:flags.15?int max_display_duration:flags.15?int = SponsoredMessage;sponsoredMessageReportOption#430d3150 text:string option:bytes = SponsoredMessageReportOption;channels.sponsoredMessageReportResultChooseOption#846f9e42 title:string options:Vector<SponsoredMessageReportOption> = channels.SponsoredMessageReportResult; channels.sponsoredMessageReportResultAdsHidden#3e3bcf2f = channels.SponsoredMessageReportResult; channels.sponsoredMessageReportResultReported#ad798849 = channels.SponsoredMessageReportResult;---functions---messages.reportSponsoredMessage#12cbf0c4 random_id:bytes option:bytes = channels.SponsoredMessageReportResult;
要向 Telegram 的版主举报赞助消息,请调用messages.reportSponsoredMessage,并传递频道/机器人 ID、random_id赞助消息的 ID 和一个空option字段。
请注意,只有设置了sponsoredMessage.can_report标志的赞助消息才能被举报。
那么,如果结果是:
-
使用 channels.sponsoredMessageReportResultChooseOption构造函数时,用户必须从本地化选项中选择一个报告选项,options选择后,必须再次调用该方法,并将选项option字段传递给channels.reportSponsoredMessageoption的参数。channels.sponsoredMessageReportResultChooseOption的字段必须用作选项选择弹出窗口的标题。
title - channels.sponsoredMessageReportResultAdsHidden构造函数,在所有聊天中对用户隐藏赞助消息。
- channels.sponsoredMessageReportResultReported构造函数显示,赞助消息已成功报告。
该方法也可能返回:
- AD_EXPIRED过期(过旧或找不到)广告的 RPC错误
- PREMIUM_ACCOUNT_REQUIRED如果用户在所选选项中要求隐藏赞助消息,但此操作需要 Telegram Premium,则会出现 RPC 错误。
测试赞助信息
对于频道https://t.me/SecretAdTestChannel,系统将始终返回赞助消息:推广频道、频道中的特定消息或带有 start 参数的机器人。
作为频道/机器人所有者提取广告收入
Telegram拥有社交媒体史上最慷慨的奖励机制之一。Telegram频道/机器人所有者现在可以获得其频道内广告收入的50% 。
点击此处»查看有关如何提取频道/机器人广告收入的更多信息,以及查看详细的收入统计数据。
第三方应用中的赞助信息
Telegram 在全球范围内持续增长,部分原因在于第三方应用使用了 Telegram API。为了应对增长带来的成本增加,Telegram 推出了赞助消息功能——一种付费且注重隐私的推广机器人和频道的方式。
如果第三方开发者的应用允许用户访问 Telegram 频道的内容,那么使用 Telegram API 的第三方开发者必须在2022 年 1 月 1 日前在其应用中支持并正确显示官方赞助信息。遗憾的是,Telegram 无法在经济上支持不显示赞助信息的第三方应用,这些应用将被终止服务。
所有开发者仍可免费使用 Telegram 的 API。第三方应用的盈利规则保持不变:开发者可以通过自身或其他合法方式投放广告来盈利,但前提是必须在应用商店的描述中显著标明所有盈利方式。