收藏
回答

微信对话开放平台调用第三方服务接口(API)总是返回错误,如何确定平台真的发出了GET?

背景是我在写一个机器人小技能,技能激活后会调用我写的第三方API回复用户。

我按照 https://developers.weixin.qq.com/doc/aispeech/platform/3rdparty_api.html 的要求写了一个GET API. API是跑在Replit上的。为了方便debug, API后台会print出每一个request里的内容。我自己用curl call或者用浏览器直接访问是没有问题的。

然后我把对话平台的机器人 (机器人ID: caseefb7e) 被设置成调用这个API来回答用户的对话。但调试时接口返回的结果始终包含错误的状态

{error_code: -1, "data_list": [], "rid": "abcdefg1234"}


我切回去看API的后台,却没有print出任何内容,似乎是API就没有收到过对话平台的GET request。那么上面结构返回的内容到底是从哪儿来的,我怎么确定在对话平台有没有发出GET request?


最后一次编辑于  2023-04-14
回答关注问题邀请回答
收藏

4 个回答

  • mina
    mina
    2023-04-11

    对话平台这边请求到你们接口的时候会再额外添加一些参数,请问你们有没有按照文档说的允许添加其他参数请求呢,以及检查一下接口超时时间呢

    2023-04-11
    有用
    回复 11
    • ChenGe
      ChenGe
      2023-04-13
      我的API的代码只关心GET request里的"question"参数。有没有处理额外参数应该没关系吧?
      2023-04-13
      回复
    • ChenGe
      ChenGe
      2023-04-13
      我现在怀疑平台是不是不能call一些特定的地址,然后我的API正好host在这些地址上,请问有没有这样的黑名单呢?
      2023-04-13
      回复
    • mina
      mina
      2023-04-13回复ChenGe
      没有黑名单,你需要允许添加其他参数请求,还需要https协议呢
      2023-04-13
      回复
    • ChenGe
      ChenGe
      2023-04-14回复mina
      不好意思我没听懂,其他参数不需要我的API来允许吧?它是接受request的一方,控制不了发送方。还有需要https协议是什么意思,和我的API能否收到平台的GET request有关吗
      2023-04-14
      回复
    • ChenGe
      ChenGe
      2023-04-14
      我在微信云托管平台上又搭了一个API,也是用curl或者浏览器直接访问就能用,不论url是https还是http开头的。但是如果在用微信对话平台的第三方服务接口调用还是只会返回错误。微信云托管的url肯定能从微信对话平台访问吧...所以我觉得现在唯一的可能性就是对话平台根本就没有发出GET...@mina 大佬有没有什么办法验证?
      2023-04-14
      1
      回复
    查看更多(6)
  • 伊凡
    伊凡
    2023-04-10

    已解决,需要使用https

    2023-04-10
    有用 2
    回复 2
    • ChenGe
      ChenGe
      2023-04-14
      你好,能具体说下“使用https”是什么意思吗
      2023-04-14
      回复
    • ChenGe
      ChenGe
      2023-04-14回复ChenGe
      是指第三方API的url要用https开头吗,它已经是了。
      2023-04-14
      回复
  • MS
    MS
    01-17
    我是接口调到后台去了,后台也正确返回了,但是信息无法回填,并且error_code一直是默认-1,j接口返回信息如下:
    HTTP/1.1 200 
    Server: nginx/1.18.0
    Date: Wed, 17 Jan 2024 09:13:27 GMT
    Content-Type: application/json
    Transfer-Encoding: chunked
    Connection: keep-alive
    Vary: Origin
    Vary: Access-Control-Request-Method
    Vary: Access-Control-Request-Headers
    Vary: Origin
    X-Content-Type-Options: nosniff
    X-XSS-Protection: 1; mode=block
    Cache-Control: no-cache, no-store, max-age=0, must-revalidate
    Pragma: no-cache
    Expires: 0
    
    
    {
      "data_list": {
        "msg": "未完成任务",
        "err_code": "200"
      },
      "err_code": 200
    }
    
    
    Response code: 200; Time: 114ms; Content length: 74 bytes
    
    
    
    01-17
    有用
    回复
  • 夏铭
    夏铭
    2023-06-13

    大佬解决了吗?


    2023-06-13
    有用
    回复
登录 后发表内容