创建会话
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 字符串应统一转换为小写。