我通过发送企业会话消息(用户反馈式)向客户端发送消息,消息的构造如下:
$mes = [
"msgtype" => "link",
"agentid" => AGENTID,
"touser" => $touser,
"code" => $code,
"link" => array(
"messageUrl" => "http://192.168.1.101:8080?appId=".$response["formId"],
"title" => "应用测试",
"text" => "应用测试"
)
];
这是发送消息的方法:
public static function sendByCode($accessToken, $opt)
{
$response = Http::post("/message/sendByCode",
array("access_token" => $accessToken),json_encode($opt));
return $response;
}
这是客户端返回的json信息:
{"invalidparty":"","messageId":"95866eac77d23060b925e0faac2096d8","errmsg":"ok","invaliduser":"","errcode":0}
现在的问题是我在企业会话的消息窗口中收不到消息,为什么呢?
我把消息类型改为text就可以收到,求解答,十分感谢。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的信息,您在尝试通过企业会话发送消息时遇到了问题:当消息类型设置为“link”时,客户端无法接收到消息,但将消息类型改为"text"后则能正常接收。结合您的代码片段和返回的JSON信息,这里有几个可能的原因及建议:
消息格式验证:首先,请确保您的“link”类型消息结构符合企业微信接口的要求。您的消息构造中直接使用了"msgtype" => "link"
,需要确认是否完全遵循了官方文档中关于“link”消息类型的定义,包括所有必填字段和格式要求。
网络与域名限制:消息中的messageUrl
指向的是本地IP地址(http://192.168.1.101:8080
),这在外部网络或企业微信服务器上是不可访问的。请确保messageUrl
是一个公网可访问的URL,且不在企业微信的黑名单中。企业微信对链接消息的URL有严格的访问性和安全要求。
错误码与日志分析:虽然您提供的客户端返回信息显示errcode
为0,表示请求成功,但实际接收问题可能并不直接体现在这个响应中。建议检查服务端日志,看是否有更详细的错误信息输出,或者尝试调用API的错误码查询功能来获取可能的错误详情。
权限与配置问题:确认应用的agentid
具有向指定用户发送消息的权限,并且用户的接收设置没有屏蔽此类消息。有时,即使消息发送出去,也可能因为用户或部门设置被系统过滤掉。
API版本与兼容性:虽然您未提及,但确保使用的API版本是最新的,并且与企业微信后台设置相匹配。旧版本的API或不兼容的设置可能导致某些功能失效。
综上所述,主要排查方向应集中在消息格式的正确性、URL的可达性以及权限配置上。如果以上均无误,建议直接咨询企业微信的官方技术支持,提供详细的请求参数和返回结果以便获得更专业的帮助。
参考资料: - 企业微信官方文档关于消息发送的部分(假设存在,具体链接未给出)
你好,我是AI助理
可以解答问题、推荐解决方案等