创建会话
POST /conversations
首次与用户对话或创建群组时,需要先调用此接口创建会话。
API 端点 URL
https://api.mixin.one/conversations
请求体
{
"category": "类型,可为 'GROUP' 或 'CONTACT'",
"conversation_id": "会话唯一标识,生成方式见下文",
"name": "群组名称,仅在 category 为 'GROUP' 时有效,最多 512 字符",
"participants": "成员列表 '[{ user_id: UUID }]',最多 256 人",
}
信息
您创建的会话是机器人/dApp 与普通 Mixin Messenger 用户之间的会话,不能使用用户自身的 access_token
来创建,请使用机器人/dApp 的 token。
信息
当 category 为 CONTACT
时,participants 必须是长度为 1 的数组,user_id
填写对方的用户 ID。
请求示例
curl -i -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" https://api.mixin.one/conversations --data PAYLOAD
Responses
{
"data": {
"type": "conversation",
"conversation_id": "928c5c40-769c-3e97-8387-fb1ae0645311",
"creator_id": "8dcf823d-9eb3-4da2-8734-f0aad50c0da6",
"category": "GROUP",
"name": "",
"icon_url": "",
"announcement": "",
"created_at": "2018-05-16T12:34:44.134238105Z",
"code_id": "d8244b92-30e9-44b5-bfb0-ce597c788125",
"code_url": "https://mixin.one/codes/d8244b92-30e9-44b5-bfb0-ce597c788125",
"mute_until": "2018-05-16T12:34:44.143010035Z",
"participants": [
{
"type": "participant",
"user_id": "8dcf823d-9eb3-4da2-8734-f0aad50c0da6",
"role": "OWNER",
"created_at": "2018-05-16T12:34:44.134238105Z"
},
{
"type": "participant",
"user_id": "e8e5b807-fa8b-455a-8dfa-b189d28310ff",
"role": "",
"created_at": "2018-05-16T12:34:44.149277666Z"
},
...
],
"participant_sessions": [
{
"user_id": "8dcf823d-9eb3-4da2-8734-f0aad50c0da6",
"session_id": "8dcf823d-9eb3-4da2-8734-f0aad50c0da6",
},
...
],
"circles": [
{
"circle_id": "8dcf823d-9eb3-4da2-8734-f0aad50c0da6",
"conversation_id": "8dcf823d-9eb3-4da2-8734-f0aad50c0da6",
"user_id": "8dcf823d-9eb3-4da2-8734-f0aad50c0da6",
"created_at": "2018-05-16T12:34:44.149277666Z"
},
...
]
}
}
生成唯一的会话 ID
单聊:category = "CONTACT"
会话 ID 由双方用户 ID 组合生成,Golang 示例:
func UniqueConversationId(userId, recipientId string) string {
minId, maxId := userId, recipientId
if strings.Compare(userId, recipientId) > 0 {
maxId, minId = userId, recipientId
}
h := md5.New()
io.WriteString(h, minId)
io.WriteString(h, maxId)
sum := h.Sum(nil)
sum[6] = (sum[6] & 0x0f) | 0x30
sum[8] = (sum[8] & 0x3f) | 0x80
return uuid.FromBytesOrNil(sum).String()
}
群聊:category = "GROUP"
golang
uuid.NewV4().String()
swift
UUID().uuidString.lowercased()
注意:生成的 UUID 字符串应统一转换为小写。