Viber REST API,如何找到唯一的 Viber 用户 ID?

Posted

技术标签:

【中文标题】Viber REST API,如何找到唯一的 Viber 用户 ID?【英文标题】:Viber REST API, how to find Unique Viber user id? 【发布时间】:2018-06-07 21:35:59 【问题描述】:

资源网址https://chatapi.viber.com/pa/send_message

一般发送消息参数

我正在尝试从 Postman 向 viber 发送消息。我不知道如何找到唯一 Viber 用户 ID,该参数是必需的。

我收到此错误:

"status":999,"status_message":"Bad receiver ID","message_token":5126721184521938239

【问题讨论】:

分享你的代码 【参考方案1】:

Danny Dainton 提到了有关如何获取数据的文档,包括关于您自己的帐户而不是其他人的唯一 ID 在内的数据!

如果用户订阅了您的公共帐户,您将收到包含用户唯一 ID 到您的 webhook 的回调,并且只有这样您才能向该用户发送消息。

根据 viber 文档:

send_message API 允许帐户向订阅该帐户的 Viber 用户发送消息。只有在用户通过按订阅按钮或发送消息或向机器人发送消息订阅公共帐户后,才能向用户发送消息(有关更多信息,请参阅订阅回调)。

非常重要

在帐户可以向用户发送消息之前,用户需要 订阅该帐户。订阅可以在两个之一中进行 方式:

用户向帐户(公共帐户和机器人)发送消息

当用户将其第一条消息发送到帐户时,该用户将 自动订阅该帐户。发送第一条消息 不会触发订阅回调,只会触发消息回调(参见 从用户部分接收消息)。订阅的事件被发送到 公共账户(仅限公共账户)

用户点击订阅按钮 触发订阅回调as described below。

【讨论】:

如果账号已经有很多订阅者怎么办,如何获取已经订阅的用户ID? 如果我们喜欢发送群发消息,我们该怎么做>? number 是新的,由发送消息的代码生成。我尝试发送消息,但我总是看到这条消息【参考方案2】:

简单,调用Get Account Info API,资源地址为https://chatapi.viber.com/pa/get_account_info 您将在响应中找到所有订阅者的列表及其用户 ID。请注意,这些用户 ID 对于每个公共帐户的每个用户都是唯一的。

更正:Get Account Info API 似乎没有返回所有订阅者,它只是为我返回了我的用户 ID(公共帐户的管理员)。基于此,除了从新订阅者、消息等的回调中获取订阅者的用户 ID 之外,没有其他方法。

【讨论】:

【参考方案3】:

通常您应该从所有回调中收集 Viber ID 并将其存储在数据库中以供将来使用。但是,如果您错过了这一步,您可以通过定期调用get_online 端点收集在线订阅用户的 Viber ID,然后使用get_user_details 端点获取有关未知用户的更多信息。

【讨论】:

以上是关于Viber REST API,如何找到唯一的 Viber 用户 ID?的主要内容,如果未能解决你的问题,请参考以下文章

如何唯一标识您的 Android 应用程序以获取 REST API

从Viber bot发送消息给订阅用户

我如何在贝宝中找到不是通过 rest api 进行的交易?

Spring Boot Rest API 处理唯一约束

从 Viber 机器人向订阅用户发送消息

如何实现FosOAuthServerBundle来保护REST API?