要把helloGPT绑定到Viber,先在Viber申请公共账号并拿到授权Token,然后在公网可访问且使用HTTPS的服务器上部署Webhook以接收Viber推送事件,再调用Viber的set_webhook接口注册回调地址,最后在helloGPT的集成配置处填写Token与Webhook地址;如果helloGPT不支持直连,可用中间件把Viber的事件转为helloGPT可识别的API调用并将回复通过Viber的send_message接口发回用户。

先说为什么要这样做(简单比喻)
把helloGPT接到Viber上,像把一台会说话的收发室接进电话网络。Viber负责把用户的话送来,Webhook是门铃,helloGPT是会话大脑,Token是门禁钥匙。只要门铃响了(Viber推送事件),你的服务器把用户话递给helloGPT,大脑思考后,再通过Viber发回去,电话通了。
准备工作(清单)
- Viber账号:注册或申请Viber Business/Public Account以获得对接权限与授权Token。
- 授权Token:从Viber管理后台获得的 X-Viber-Auth-Token,后续所有调用都要用它做身份认证。
- 公网HTTPS服务器:Webhook地址必须是可被Viber访问的HTTPS URL,证书需有效(不能自签名)。
- helloGPT访问权限:能在helloGPT控制台或API里填写第三方集成信息,或能调用helloGPT的API作为中间件。
- 开发环境:可选Node/Python/Java,能处理JSON和HTTP请求。
- 合规与隐私:告知用户数据如何使用,保存Token和日志时注意加密与访问控制。
核心步骤概览
- 在Viber获取授权Token(Public Account / Business)
- 搭建并公开部署HTTPS Webhook,能接收并解析Viber发来的JSON事件
- 调用Viber的set_webhook接口把你的回调URL注册到Viber
- 在helloGPT的集成配置中填入Token与Webhook或用中间件把消息双向转发
- 测试、调优并监控运行状态
第一步:在Viber获取授权Token
要点:你需要一个Viber公共账号或Business账号,从Viber管理后台或API申请并获得一串授权Token(即 X-Viber-Auth-Token)。这串Token类似门禁卡,千万别泄露。
实际操作通常是:在Viber for Business或Public Account控制台创建账号,填写应用信息(显示名称、头像、简介等),创建成功后系统会提供Token。有时需要等待审核或通过邮箱验证,步骤随Viber后台更新会有差异(以Viber官方文档为准)。
第二步:部署HTTPS Webhook并能处理基本事件
Webhook必须满足两个条件:1) HTTPS且证书有效;2) 能正确处理Viber发送的JSON事件。下面是一个最简单的Node.js/Express示例(思路比代码重要)。
// 伪代码示例,示范接收并回传200
const express = require('express');
const app = express();
app.use(express.json());
app.post('/viber-webhook', (req, res) => {
const event = req.body;
console.log('Viber event', event);
// 常见事件类型:message, conversation_started, delivered, seen, subscribed, unsubscribed
// 将事件转发给helloGPT或在此决定如何回复
res.status(200).send(); // Viber只要拿到200就认为成功
});
app.listen(3000);
关于事件:最常见的是 message(用户消息)和 conversation_started(用户第一次与bot交互)。收到message后,你通常会把文本或媒体提取出来发给helloGPT,然后把helloGPT的回复通过Viber的send_message接口回复用户。
第三步:用 set_webhook 注册你的回调地址
注册Webhook的请求需要把你的URL发送到Viber,并用授权Token做请求头。下面是一个常用的cURL示例(把 TOKEN 和 URL 替换为真实值):
curl -X POST https://chatapi.viber.com/pa/set_webhook \
-H "X-Viber-Auth-Token: TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url":"https://your.domain/viber-webhook",
"event_types":["message","conversation_started","delivered","seen","failed","subscribed","unsubscribed"]
}'
如果返回成功码(例如 0 / OK),Webhook就注册好了。之后Viber会把事件POST到你登记的URL。
第四步:把Token和Webhook配置到helloGPT(两种情况)
方案A:helloGPT提供原生Viber集成界面
- 打开helloGPT控制台的“集成”或“第三方连接”部分,选择Viber;
- 填入你从Viber拿到的Token和Webhook URL;
- 保存并测试连接(通常会有“测试消息”或检查Webhook是否收到事件)。
方案B:helloGPT未直接支持Viber——使用中间件
中间件是最通用也最常见的方式。中间件做三件事:
- 接收Viber的事件并解析成统一格式(比如:sessionId、userId、text、attachments);
- 把解析后的消息以helloGPT的API格式转发给helloGPT,并等待回复;
- 把helloGPT的回复转回Viber消息格式,通过 Viber 的 send_message 接口发送给用户。
这样的中间件既可以做消息映射,也能做会话管理、上下文维护、日志审计和速率控制。
典型交互示例(完整流程)
举个例子,用户在Viber发了“查天气”。流程大致:
- Viber把JSON事件POST到你的 webhook(类型:message,包含userId和文本)。
- 你的服务器解析JSON,把文本与用户ID封装,通过helloGPT API发起请求(附带会话ID)。
- helloGPT返回回答文本或富媒体建议。
- 你的服务器把回答转换为Viber的消息格式,调用send_message并带上X-Viber-Auth-Token发送给用户。
- 用户在Viber上收到并可继续对话,整个上下文由你的中间件或helloGPT会话管理维持。
调用Viber发送消息的示例
curl -X POST https://chatapi.viber.com/pa/send_message \
-H "X-Viber-Auth-Token: TOKEN" \
-H "Content-Type: application/json" \
-d '{
"receiver":"USER_ID",
"min_api_version":1,
"sender":{"name":"你的Bot名称","avatar":"https://.../avatar.jpg"},
"type":"text",
"text":"这是来自helloGPT的回复"
}'
常见事件类型与处理建议
| 事件 | 触发时机 | 处理建议 |
| message | 用户发送消息 | 解析内容并转发给helloGPT;短文本可直接答复,附件下载后供模型分析 |
| conversation_started | 用户首次与公共账号交互 | 发送欢迎语并初始化会话上下文;可请求用户同意数据使用 |
| delivered / seen | 消息已送达/已读 | 用于统计与调试,不影响主流程 |
| subscribed / unsubscribed | 关注或取消关注 | 更新用户状态并清理会话资源 |
安全、稳定性与合规要点(必须注意)
- 保存Token:Token是关键凭证,要加密存储并限制访问。
- HTTPS证书:Webhook使用公信机构签发的证书,确保TLS无误。
- 重试与幂等:Viber和你自己的网络可能会造成重复事件,设计幂等处理以避免重复回复。
- 速率限制:注意Viber对API调用的限流策略,必要时实现队列或下发节流。
- 隐私合规:收集用户同意,按法律要求清理或导出用户数据。
调试与测试小技巧(那些容易忽略的)
- 本地开发时可以用ngrok之类工具把本地服务暴露到公网做Webhook调试(同样要用HTTPS)。
- 先只订阅少量事件(message, conversation_started),等主流程稳定再扩展其他事件。
- 开启足够的日志(请求体、响应码、错误堆栈),但日志中不要记录Token或敏感用户信息。
- 用真实用户场景多跑一些会话,检验上下文是否丢失或错乱(尤其在并发时)。
典型错误与排查方向
- Webhook返回非200或超时:检查服务器响应时间、TLS配置、以及是否返回了有效的HTTP 200。
- Token无效或权限不足:确认Token是否过期或被替换,检查是否用对了Public Account的Token。
- 消息格式错误:Viber对消息类型和字段有要求(sender、type、receiver等),注意JSON字段拼写与类型。
- 重复消息或会话错位:确认中间件的会话ID策略和幂等处理。
示例:把Viber消息转发给helloGPT并回复(伪代码)
// 伪代码思路
on ViberWebhook(event) {
if (event.type === 'message') {
const userId = event.sender.id;
const text = event.message.text;
// 1. 调用 helloGPT API
const reply = callHelloGPTApi({ sessionId: userId, prompt: text });
// 2. 将回复通过 Viber send_message 发送回去
callViberSendMessage({ receiver: userId, text: reply });
}
}
这里面最实际的工作量往往在中间件的“消息映射”和“会话管理”上:如何把用户历史上下文传给helloGPT、如何节省Token调用次数、如何把多媒体或按钮转换成helloGPT可处理的输入等。
最后一点,也是我常遇到的——别把上线当成终点。正式运行后会遇到网络抖动、特殊字符导致的JSON解析问题、用户意外操作(退订、群聊环境差异)等。把监控、告警和回滚机制都想好,会让你睡得安稳一点。
如果你现在手边有Viber的Token和一个能跑HTTPS的服务器,按上面的步骤走一遍,先实现一个最小可用的回路(收到一条就能回一条),把这个打通之后再把helloGPT的能力慢慢铺开——比如加入上下文控制、多轮指令、富媒体回复或是针对会话做个性化设置。就像搭积木,先搭稳定的底座,然后再叠各种好玩的模块。