Description
我按照演示代码搭建了相关的程序,在单聊时stream模式能够正常接收和发送消息,但是群聊时@机器人,并不会调用回调函数,全量相关代码如下
定义事件处理器
class MyEventHandler(dingtalk_stream.EventHandler):
async def process(self, event: dingtalk_stream.EventMessage):
print(event.headers.event_type, event.headers.event_id, event.headers.event_born_time, event.data)
return AckMessage.STATUS_OK, 'OK'
class MyCallbackHandler(dingtalk_stream.ChatbotHandler):
def init(self):
super(dingtalk_stream.ChatbotHandler, self).init()
async def process(self, callback: dingtalk_stream.CallbackMessage):
print(callback.headers.topic, callback.data)
incoming_message = dingtalk_stream.ChatbotMessage.from_dict(callback.data)
# 文本消息回复
# text = incoming_message.text.content.strip()
# self.reply_text(text, incoming_message)
# Markdown消息回复
text = 'echo received message:\n'
text += '\n'.join(['> 1. %s'%i for i in incoming_message.text.content.strip().split('\n')])
self.reply_markdown('dingtalk-tutorial-python', text, incoming_message)
return AckMessage.STATUS_OK, 'OK'
启动钉钉Stream客户端
def start_dingtalk_client():
credential = dingtalk_stream.Credential(APP_KEY, APP_SECRET)
client = dingtalk_stream.DingTalkStreamClient(credential)
#事件
client.register_all_event_handler(MyEventHandler())
#消息接收
client.register_callback_handler(dingtalk_stream.ChatbotMessage.TOPIC, MyCallbackHandler())
client.start_forever()