内网服务器程序接收钉钉机器人消息 stream python

        基于钉钉群机器人的消息接收并处理, 使用钉钉提供的stream方式进行连接钉钉服务器,当你再钉钉群里艾特对应的机器人后,此消息会被程序接收到,已经打印了详细的日志信息,可以根据日志信息进行二次开发。python语言

# !/usr/bin/env python

import argparse    # 命令行参数的解析
import logging
from dingtalk_stream import AckMessage
import dingtalk_stream

# import requests,json

def get_instructions(info_text):
    # 业务逻辑部分写在这里
    return '输入有误。帮助文档\n'+\
            '其他功能敬请期待...'

def setup_logger():     # 配置日志记录器,设置日志格式、输出到控制台,并设定日志级别为INFO。
    logger = logging.getLogger()
    handler = logging.StreamHandler()
    handler.setFormatter(
        logging.Formatter('%(asctime)s %(name)-8s %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s'))
    logger.addHandler(handler)
    logger.setLevel(logging.INFO)
    return logger

def define_options():    # 用户提供--client_id和--client_secret,这些通常是与钉钉应用相关的密钥
    parser = argparse.ArgumentParser()
    parser.add_argument(
        '--client_id', dest='client_id', required=True,
        help='app_key or suite_key from https://open-dev.digntalk.com'
    )
    parser.add_argument(
        '--client_secret', dest='client_secret', required=True,
        help='app_secret or suite_secret from https://open-dev.digntalk.com'
    )
    options = parser.parse_args()
    return options

class EchoTextHandler(dingtalk_stream.ChatbotHandler):    # 继承自dingtalk_stream.ChatbotHandler,这是一个异步处理类,用于处理从钉钉聊天机器人接收到的消息。收到消息后,会回复相同的内容,并返回确认状态。
    def __init__(self, logger: logging.Logger = None):
        super(dingtalk_stream.ChatbotHandler, self).__init__()
        if logger:
            self.logger = logger

    async def process(self, callback: dingtalk_stream.CallbackMessage):
        incoming_message = dingtalk_stream.ChatbotMessage.from_dict(callback.data)

        text = incoming_message.text.content.strip()
        self.logger.info('mylog----callback.data:')
        self.logger.info(callback.data)
        self.logger.info('mylog----incoming_message:')
        self.logger.info(incoming_message)
        self.logger.info('mylog----text:')
        self.logger.info(text)
        # print('\n\n',callback.data,'\n\n',incoming_message,'\n\n',text)
        resout = get_instructions(text)
        self.logger.info('mylog----resout:')
        self.logger.info(resout)
        # print(resout)
        self.reply_text(resout, incoming_message)
        return AckMessage.STATUS_OK, 'OK'

def main():
    logger = setup_logger()
    # options = define_options()

    # credential = dingtalk_stream.Credential(options.client_id, options.client_secret)
    credential = dingtalk_stream.Credential('钉钉应用授权--client_id', '钉钉应用授权--client_secret')
    client = dingtalk_stream.DingTalkStreamClient(credential)
    client.register_callback_handler(dingtalk_stream.chatbot.ChatbotMessage.TOPIC, EchoTextHandler(logger))
    client.start_forever()

if __name__ == '__main__':
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值