美洽
首页 / 未分类 / 美洽API发送消息怎么操作?

美洽API发送消息怎么操作?

2026-06-12 · admin

要通过美洽 API 发送消息,先在美洽控制台创建应用并获取 app_key/app_secret(或 Access Token);在后端用密钥换取短时 token 或生成请求签名,建立或获取会话(visitor/ conversation),必要时先上传附件获取 file_id,然后向消息发送接口 POST 消息体,包含会话 ID、消息类型与内容,设置必要请求头(Authorization / MQ-App-Key / Content-Type)。实时交互可以用 WebSocket/长连接,异步回调通过 webhook 接收消息状态和访客回复。下面把每一步拆开讲清楚,给出示例、常见错误与调试技巧,手把手带你能立刻跑通。

美洽API发送消息怎么操作?

先弄清楚:整个流程是什么样的?

简单来说,发送消息的流程可以拆成四步:

  • 准备凭证(在控制台拿到 API key/secret 或生成 Access Token);
  • 建立会话(visitor 或会话 ID,要把消息发到哪个会话里);
  • 上传附件(可选),先把图片/文件上传得到 file_id;
  • 发送消息请求,向消息接口 POST 内容并带上必要头部;

实时场景你可能会用 WebSocket 保持双向连接,或者用长轮询。无论哪种方式,后台要能验证签名并处理回调。

准备工作:注册、应用与凭证

1)注册并创建应用

在美洽控制台注册企业账号,进入开发者或应用管理板块,新建「应用/接入」以获取身份凭证。不同接入方式(SDK、开放 API)可能给出不同的密钥或 token。

2)获取 API Key / Secret 或 Access Token

  • 常见会有 app_key(或 client_id)和 app_secret(或 client_secret)。
  • 有的场景直接给一个长期 Access Token;有的场景需要用 app_key+secret 换短期 token(例如通过 OAuth 或签名接口)。
  • 务必把 Secret 保存在服务端,不要放到前端或移动端曝光。

3)环境与权限

确认该应用对发送消息、上传文件和读取会话等接口有权限;如果要主动发起(企业主动推送),还需开通相应权限或使用白名单模板。

如何建立会话(Conversation / Visitor)

美洽的消息是发到会话里的,所以先要创建或获取会话 ID。常见思路:

  • 访客发起:客户端 SDK(Web/小程序/APP)自动在美洽侧创建访客与会话;
  • 在服务端创建:通过 API 创建一个 visitor 记录并得到 visitor_id / conversation_id;
  • 使用已有会话:如果用户已存在会话,直接使用该会话的 ID 来发送消息。

示例(伪代码思路):先调用创建会话接口,返回 { conversation_id: “xxx” },后续消息都带上这个 ID。

发送消息:REST 调用的标准步骤

发送消息的核心是一个 POST 请求,带上会话 ID、消息类型和内容。注意 header、content-type 和鉴权字段。

常见请求头(示例)

  • Authorization: Bearer {access_token} (或自家平台的 MQ-App-Key / MQ-Sign)
  • Content-Type: application/json 或 multipart/form-data(如果上传文件)
  • 其他:X-Request-Id 用于幂等、时间戳或签名字段视具体实现而定。

消息体常见字段(示例格式)

字段 含义
conversation_id 会话 ID,消息将被发送到该会话
sender 发送者类型(visitor / agent / system)
type 消息类型(text, image, file, card, quick_reply 等)
content 消息内容(文本或结构化 JSON,取决于 type)
file_id 若为文件类消息,通过上传接口返回的 file_id
client_msg_id 可选:客户端消息 ID,用于幂等和排重

示例:发送文本消息(伪 curl)

(注意:下面的 URL、header 名称和字段名以你控制台文档为准;示例用占位符)

curl -X POST "https://api.meiqia.com/v{版本}/messages" \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "conversation_id": "CONV_123456",
    "type": "text",
    "content": "您好,我是客服,有什么可以帮忙?",
    "client_msg_id": "msg_10001"
  }'

上传附件(图片/文件)

如果要发送图片或文件,通常需要先上传文件到美洽文件存储,接口会返回一个 file_id,然后在发送消息时引用该 file_id。

上传方式

  • 通过单独的文件上传接口(multipart/form-data),或
  • 有的平台支持在发送消息时直接以 multipart 附带文件(注意字段名)。

上传示例(伪 curl)

curl -X POST "https://api.meiqia.com/v{版本}/files" \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -F "file=@/path/to/pic.jpg" \
  -F "purpose=message"

返回示例包含 file_id,拿到后在消息体里写 file_id 即可。

实时交互:WebSocket / 长连接

如果你需要双向、低延迟的实时消息,使用 WebSocket(或长连接)会更合适。流程通常是:

  • 服务端或客户端先向认证接口申请临时 token 或签名;
  • 使用 token 建立 WebSocket 连接;
  • 连接建立后,按协议发送登录/绑定会话的事件;
  • 随后就可以收发消息,平台会推送访客的消息、状态变更等事件。

注意心跳、重连策略和消息确认(ack)机制。

回调(Webhook):如何接收访客回复和状态更新

美洽会把访客的新消息、消息状态变更(已读、失败)等通过 webhook 推送给你。配置回调地址时需要:

  • 保证回调地址可被公网访问;
  • 验证签名或时间戳以防伪造(文档一般说明如何校验)
  • 返回正确的 HTTP 状态码(通常 200 表示收到并处理成功)

常见错误码与排查思路

错误码/HTTP 可能原因
400 参数缺失或格式错误(检查 JSON、必填字段)
401 鉴权失败(Token 过期、Secret 不正确)
403 无权访问(权限未开通或资源受限)
404 接口路径或会话 ID 不存在
429 调用频率超限(需要限流与退避重试)
5xx 服务端错误(重试并上报)

排查步骤

  • 先看返回的 body,通常含错误码和错误信息;
  • 确认使用的 token 是否仍然有效;
  • 用 Postman 或 curl 复现请求,逐步缩小问题;
  • 检查会话 ID、file_id 是否准确;
  • 查看 webhook 是否配置并能收到事件(如果期待异步回调)。

示例代码(简洁版)

Node.js(使用 fetch / node-fetch)

const fetch = require('node-fetch');

async function sendText(conversationId, text, accessToken) {
  const url = 'https://api.meiqia.com/v{版本}/messages'; // 替换为控制台文档提供的 URL
  const body = {
    conversation_id: conversationId,
    type: 'text',
    content: text,
    client_msg_id: 'c_' + Date.now()
  };
  const res = await fetch(url, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${accessToken}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(body)
  });
  return res.json();
}

Python(requests)

import requests
import time

def send_text(conversation_id, text, access_token):
    url = 'https://api.meiqia.com/v{版本}/messages'
    headers = {
        'Authorization': f'Bearer {access_token}',
        'Content-Type': 'application/json'
    }
    payload = {
        "conversation_id": conversation_id,
        "type": "text",
        "content": text,
        "client_msg_id": f"c_{int(time.time()*1000)}"
    }
    r = requests.post(url, json=payload, headers=headers, timeout=10)
    return r.json()

实用技巧与最佳实践

  • 短期 token:优先在服务端用 app_secret 换短期 token,避免 long-lived secret 泄露。
  • 幂等设计:发消息时带 client_msg_id,遇到网络超时可以安全重试。
  • 重连策略:WebSocket 建议指数退避 + 上限重试次数。
  • 日志与审计:记录请求 ID、返回值、时间戳,便于排查问题。
  • 限流:对外部发送频率做衰减控制,遇到 429 做退避重试。
  • 异步处理:上传大文件或复杂消息建议先异步化,不阻塞主线程。

一些容易踩的坑(别慌,都是常见)

  • 把 app_secret 写在前端(会被盗用)——密钥一定放后端;
  • 上传文件后直接用本地路径而不是 file_id;
  • 不处理 webhook 的重试机制,重复事件导致重复消息;
  • 错把访客 ID 当作会话 ID 发请求;
  • 时间戳签名未考虑时区或服务器时间不同步,导致鉴权失败。

调试小贴士

想快点排通路子,可以按这个顺序来:

  1. 用 Postman 或 curl 先拿到一个可用的 Access Token;
  2. 调用「创建会话」接口,确认能拿到 conversation_id;
  3. 尝试发送一条简单文本消息,看返回是否成功;
  4. 如果要发图片,先单独上传文件确认能拿到 file_id,再发消息;
  5. 检查 webhook 是否能收到推送,验证签名逻辑是否正确;

常见场景举例(帮助你快速上手)

场景 A:网站客服主动推送订单通知

  • 后端检测到订单状态变化 → 生成模板消息 → 使用服务端 token 调用发送接口。
  • 如果用户未在会话中,可以先创建会话或通过模板推送(需平台支持)。

场景 B:机器人回复并转人工

  • 机器人通过 API 发送结构化消息(富文本/卡片)并在按钮中带上「转人工」事件;
  • 用户点击后,触发会话分配给人工座席(通过 API 调用分配接口)。

最后,关于安全与合规

发送消息时要注意隐私与合规,敏感信息要脱敏或加密存储,确认消息模版的内容符合平台规范。并发量大时要做好限流与容错,避免因为大批量推送影响用户体验或触发风控。

好,就写到这里 —— 如果你现在想要一个最小可运行的 demo,我建议先拿到控制台的示例 URL 与 token,照着上面的 Node/Python 示例把请求替换成控制台给出的具体路径和值,几分钟内就可以跑通。顺手把日志、重试和错误上报加上,遇到具体错误再详细调试(通常都是 token、会话 ID 或 file_id 的问题)。

最新文章

即刻美洽,拥抱 AI

90% 以上企业使用美洽后客户满意度提升30%以上的 AI Agent