Closed dellnoantechnp closed 1 year ago
error=404 Client Error: Not Found for url: https://api.dingtalk.com/v1.0/card/instance/createAndDeliver
这个 https://api.dingtalk.com/v1.0/card/instance/createAndDeliver
api 貌似是404,莫非这教程已经过时 ??
人麻了。。。 🥲
这个 SDK 是 Stream 模式的 SDK,不是卡片 SDK。在 Stream SDK 中封装了常见的文本、markdown、普通版卡片只是为了常见接口快速集成。更丰富的接口调用推荐采用 API SDK,而不是 Stream SDK。关于钉钉 SDK 可以参考这篇 SDK 汇总文档
error=404 Client Error: Not Found for url: https://api.dingtalk.com/v1.0/card/instance/createAndDeliver
这个
https://api.dingtalk.com/v1.0/card/instance/createAndDeliver
api 貌似是404,莫非这教程已经过时 ??人麻了。。。 🥲
这是最新的接口文档,还处于可用状态。 404 不代表接口不可用,有可能是请求参数中机器人 RobotCode 不存在、卡片 ID 不存在等问题导致的异常。 可以将请求上下文信息通过技术支持提交反馈寻求帮助。
看了下
chatbot.py
源码,似乎只支持互动卡片标准版
的库方法,ChatbotHandler.reply_card()
方法没有开放cardTemplateId
字段的注入,无法使用在 https://open-dev.dingtalk.com/fe/card 上编辑的自定义卡片模板ID 。
reply_card()
方法的切面:def reply_card(self, card_data: dict, incoming_message: ChatbotMessage, at_sender: bool = False, at_all: bool = False) -> str: """ 回复互动卡片。由于sessionWebhook不支持发送互动卡片,所以需要使用OpenAPI,当前仅支持自建应用。 https://open.dingtalk.com/document/orgapp/robots-send-interactive-cards :param card_data: 卡片数据内容,interactive_card.py中有一些简单的样例,高阶需求请至卡片搭建平台:https://card.dingtalk.com/card-builder :param incoming_message: 回调数据源 :param at_sender: 是否at发送人 :param at_all: 是否at所有人 :return: """ .....
cardbot.py
demo 中将原有的self.reply_markdown_card()
方法调用修改为如下所示:def process(self, callback: dingtalk_stream.CallbackMessage): incoming_message = dingtalk_stream.ChatbotMessage.from_dict(callback.data) card_instance = self.reply_card(INTERACTIVE_CARD_JSON_SAMPLE_3, incoming_message)
程序开启DEBUG模式,将
ChatbotHandler.reply_card()
处打断点暂停,手动修改body
属性值的cardTemplateId
字段值为开发后台创建的模板ID字符串,然后修改card_data
属性为{"cardParamMap": {"var1": "value1"}}
,然后往下执行,在客户端上收到空参数模板的卡片弹出,根据官方文档教程示例,得知互动卡片高级版的接口地址为
POST /v1.0/card/instance/createAndDeliver
,本库中的reply_card()
方法的url-path
为/v1.0/im/v1.0/robot/interactiveCards/send
,和示例文档不匹配。或者我的使用方法有什么错误?
可以先根据机器人接收到的消息 incoming_message 实例化一个 dingtalk_stream.CardReplier,然后调用 create_and_send_card 方法并传入互动卡片高级版搭建的 card_template_id 以及初始化的 card_data 创建并发送卡片。
看了下
chatbot.py
源码,似乎只支持互动卡片标准版
的库方法,ChatbotHandler.reply_card()
方法没有开放cardTemplateId
字段的注入,无法使用在 https://open-dev.dingtalk.com/fe/card 上编辑的自定义卡片模板ID 。reply_card()
方法的切面:cardbot.py
demo 中将原有的self.reply_markdown_card()
方法调用修改为如下所示:程序开启DEBUG模式,将
ChatbotHandler.reply_card()
处打断点暂停,手动修改body
属性值的cardTemplateId
字段值为开发后台创建的模板ID字符串,然后修改card_data
属性为{"cardParamMap": {"var1": "value1"}}
,然后往下执行,在客户端上收到空参数模板的卡片弹出,根据官方文档教程示例,得知互动卡片高级版的接口地址为
POST /v1.0/card/instance/createAndDeliver
,本库中的reply_card()
方法的url-path
为/v1.0/im/v1.0/robot/interactiveCards/send
,和示例文档不匹配。或者我的使用方法有什么错误?