关于 Mixin Messenger
Mixin Messenger 是一个开源的端对端加密聊天软件,并且集成了基于 Mixin Network 的多链钱包。
安全:端对端加密保障消息安全,去中心化、可信代码保障钱包安全
免费:免费收发消息,免费转账
易用:手机号注册即可使用,6 位数字支付密码即可享受数字加密货币
快速:实时收发消息,实时享受转账服务
丰富:支持文字、贴纸、图片、语音、视频等消息;支持 23 条主链,超过 10 万种代币
注意 Mixin Messenger 没有专门推荐机器人的界面,现在和以后都也不会有,机器人开发好后需要开发者自己想办法推广。早期在 Mixin Messenger 里推广自己的机器人是很容易的,做好了往群机器人一发大家都知道了,能帮你获得珍贵的种子用户,Exin(7000101276)就是一个很好的例子
准备
1、注册成为 Mixin 的开发者
注册登录 Mixin Messenger ,点首页底部 ⭕️打开摄像头界面扫码登录 https://developers.mixin.one (点右上角)
2、创建机器人
点 Create New App 按提示创建就行, 创建完即可在 Mixin Messenger 首页顶部输入机器人的 ID 搜索找到你创建的机器人
机器人的 Identity Number
创建机器人参数说明:
The home uri
机器人入口,Mixin Messenger 里打开机器人实际上打开一个内置 WebView 的弹窗,WebView 会默认加载你设置的 home uri。
The OAuth redirect uri
OAuth 授权回调,必填项。
推荐上传 512x512 像素图标作为机器人的图标
3、生成机器人相关的 Session
点 Click to generate a new session 生成 PIN、Session Id 、Pin Token、Private Key,这些都要记下来后面要用,服务器和浏览器都不会保存这些敏感信息(注意刷新再次点又会生成一个新的,会覆盖旧的)。
4、OAuth 授权
4.1 权限列表
权限
说明
PROFILE:READ
获取用户基本信息,例如 UserID、Mixin ID、名称、头像
ASSETS:READ
读取用户资产列表,资产余额,充值、提现和转账数据
PHONE:READ
读取用户手机号
CONTACTS:READ
读取用户联系人列表,禁言列表
4.2 申请授权
client_id 参数是步骤 3 图中的 User Id
response_type 固定写 code 就行
4.3 授权成功回调
Mixin Messenger 授权成功后会回调步骤 2 填写的 redirect uri ,并且返回一个 authorization code ,通过 https://api.mixin.one/oauth/token 验证成功后会返回 access token 存起来,后续可以用 access token 通过 API 访问用户数据,据此可以判断当前用户是否已经授权过了。参考官方开发者指南里 Request Access Token 章节: https://developers.mixin.one/guides
5、通过 API 访问授权用户的数据
访问授权用户的个人资料、资产列表等 API 都需要设置 Authorization Token, 直接用上面取到的 access_token 即可。
GET -H "Authorization: Bearer ACCESS_TOKEN" https://api.mixin.one/me
{
"data": {
"type": "user",
"user_id": "773e5e77-4107-45c2-b648-8fc722ed77f5",
"name": "Team Mixin",
"identity_number": "7000"
}
}
访问以下 API 都需要相应的授权,需要在步骤 4 申请授权时设置,常用 API :
/me 获取授权用户的个人信息,例如 user_id、name 等,如果后续需要和用户交互可以把用户信息保存到你服务端的数据库里,例如给用户发消息,记录用户的支付信息等。参考 API:https://developers.mixin.one/api/beta-mixin-message/read-profile/
/assets 获取授权用户的资产列表,包含余额信息,其中 asset id 是 Mixin Network 中的数字资产的唯一标识,参考 API :https://developers.mixin.one/api/alpha-mixin-network/read-assets/
/blocking_users 获取授权用户的禁言列表,可实现屏蔽大群机器人被禁用户的消息
当 API 返回 401 时你需要清理旧的 access_token 然后重新请求授权
6、Schema 支持
支付
https://mixin.one/pay?recipient=&asset=&amount=&memo=&trace=
recipient 是收款人的 User Id,asset 是具体支付资产 id,amount 支付金额,memo 支付备注(可以不传),trace 支付唯一编号 UUID
trace 可以用来防止重复支付,每一笔交易都应该生成一个新的 trace。可以用轮询的方式根据 trace 调用 https://api.mixin.one/transfers/trace/[trace_id] 来检测是否已经完成支付,参加js 代码 里的 handleOrderCreate 方法。
7、通过 JS 获取当前的 Conversation ID
可以从某个会话中打开机器人,例如发红包、抢红包、打赏等操作,机器人可以 js 调用 prompt('MixinContext.getContext()') 获得当前的 Conversation ID,具体参考代码 https://github.com/MixinNetwork/mixin.one/blob/master/src/utils/mixin.js 。如果获取失败或者为空,说明不是从某个会话中打开的机器人页面。
8、给用户发消息
知道用户 ID 就可以给用户直接发消息,可以通过用户授权、用户主动发消息或用户主动添加机器人为联系人三种方式来获取用户 ID。
当用户添加机器人为联系人时 Mixin 的消息服务器会给机器人发一个 hi ,也可以通过这种方式获取用户的 ID。
消息类型
消息类型
说明
PLAIN_TEXT
文字
PLAIN_IMAGE
图片
PLAIN_VIDEO
视频
PLAIN_DATA
文件
PLAIN_STICKER
贴纸
PLAIN_CONTACT
联系人(名片)
APP_BUTTON
按钮
APP_BUTTON_GROUP
按钮组
APP_CARD
卡片,抢红包就是用的这种样式
PLAIN_LIVE
直播,样式和视频一样,左上角显示一个 LIVE 标识
APP_BUTTON_GROUP、APP_CARD 和 PLAIN_LIVE 都是 Mixin Messenger 为机器人特别支持的样式
APP_BUTTON 的 action 支持 input:SOMETHING 。例如当前的 App Button 的 action 是 “input:subscribe” ,当用户点击这个按钮时客户端会自动发送一条 “subscribe” 的消息给机器人,开发者可以任意指定 input 后面的文字。
消息发送
需要有 Conversation ID 才能发消息, 1 对 1 会话使用 message.go 的 UniqueConversationId 方法生成
通过 WebSocket 发消息
连接 WebSocket 后通过 blaze.go 的 SendPlainText、SendContact 等方法发消息
通过 HTTP 批量发消息
调用 message.go 的 PostMessage 方法发送消息
机器人只能发 PLAIN_ 开头的不加密消息,representative_id 参数主要用于大群机器人用来标识当前发消息的用户
9、接收用户发给机器人的消息
即使将机器人添加到多人群组,机器人也收不到群组产生的消息,群组的消息都是加密的,机器人只能处理未加密的消息。
注意收到消息处理完以后一定要发 ACKNOWLEDGE_MESSAGE_RECEIPT 类型的消息告诉 Mixin Messenger 服务器你已经收到了消息,否则每次给服务器发 LIST_PENDING_MESSAGES 都会再次发给你的小程序。(Go 的 SDK 已经默认处理了)
10、大群机器人
Mixin Messenger 的无上限大群是通过机器人中转消息来实现的,具体参考文章:
11、优化小程序
12、资源
Exin 团队基于 Mixin Messenger 开发的各种交易工具已经实实在在的获取到几万真实用户并且已经赚到钱!欢迎加入与 Mixin 共同成长,获取你宝贵的种子用户!