avatar of 发明者量化-小小梦 发明者量化-小小梦
tập trung vào tin nhắn riêng tư
4
tập trung vào
1271
Người theo dõi

Gọi API DingTalk để triển khai tin nhắn đẩy robot

Được tạo ra trong: 2020-07-02 12:03:23, cập nhật trên: 2023-09-28 21:08:12
comments   4
hits   4728

Gọi API DingTalk để triển khai tin nhắn đẩy robot

I. Tóm tắt

Để theo dõi trạng thái giao dịch của Inventor Quant Robot trong các giao dịch thực tế, đôi khi chúng ta cần gửi kết quả giao dịch do robot thực hiện tới WeChat, email, tin nhắn văn bản, v.v. Tuy nhiên, với hàng trăm tin nhắn đủ loại mỗi ngày, mọi người không còn nhạy cảm với những tin nhắn này nữa, dẫn đến việc không thể kiểm tra kịp thời các tin nhắn quan trọng. Do đó, bài viết này triển khai chức năng đẩy tin nhắn robot bằng cách gọi giao diện nhóm DingTalk.

2. Robot nhóm DingTalk

Robot nhóm DingTalk là một chức năng mở rộng nâng cao. Chỉ cần bạn có tài khoản DingTalk là có thể sử dụng. Nó có thể tổng hợp thông tin của bên thứ ba vào nhóm DingTalk và thực hiện đồng bộ hóa thông tin tự động. Nó hỗ trợ quyền truy cập tùy chỉnh vào giao thức Webhook và tổng hợp các lời nhắc, cảnh báo và thông tin khác vào nhóm DingTalk thông qua Inventor Quantitative Robot. Hỗ trợ ba định dạng tin nhắn: văn bản, liên kết và đánh dấu, và năm loại tin nhắn. Có thể gửi cùng một tin nhắn đến nhiều nhóm DingTalk cùng một lúc. Tham khảo liên kết chính thức: https://ding-doc.dingtalk.com/doc#/serverapi2/ye8tup

3. Tạo một con robot

Bước 1: Tạo nhóm DingTalk Gọi API DingTalk để triển khai tin nhắn đẩy robot Mỗi lần một robot tùy chỉnh được tạo trong nhóm DingTalk, một địa chỉ Hook duy nhất được tạo ra, mà chúng tôi gọi là địa chỉ WebHook. Bằng cách đẩy tin nhắn đến địa chỉ WebHook, nhóm DingTalk sẽ nhận được tin nhắn. Hãy lấy DingTalk trên PC làm ví dụ. Đầu tiên, nhấp vào dấu “+” ở góc trên bên trái để bắt đầu trò chuyện nhóm. Nếu bạn chỉ muốn tự mình nhận tin nhắn, bạn có thể thêm ngẫu nhiên hai người rồi đuổi họ ra. Điền trong tên nhóm: “FMZ Robot”, và chọn Bình thường làm loại nhóm. Chỉ cần nhóm.

Bước 2: Thêm robot nhóm DingTalk Nhấp vào hình đại diện của bạn, chọn Quản lý robot, sau đó chọn Tùy chỉnh và nhấp vào Thêm. Tùy chỉnh tên robot: “FMZ” và thêm nó vào nhóm DingTalk mà bạn vừa tạo. Robot hỗ trợ ba thiết lập bảo mật: Gọi API DingTalk để triển khai tin nhắn đẩy robot

  • Từ khóa tùy chỉnh: Thông tin sẽ chỉ được đồng bộ hóa nếu chứa từ khóa này.
  • Thêm chữ ký: tương đương với việc đặt mật khẩu.
  • Địa chỉ IP: Phân đoạn địa chỉ IP của thông tin cố định của bên thứ ba. Gọi API DingTalk để triển khai tin nhắn đẩy robot Gọi API DingTalk để triển khai tin nhắn đẩy robot Nếu chỉ dùng để nhắc nhở hoặc báo thức, chỉ cần chọn từ khóa tùy chỉnh. Từ khóa chúng tôi định nghĩa ở đây là “:”, nghĩa là khi thông tin được robot Inventor Quant đẩy ra chứa “:”, thông tin này sẽ được đẩy đến nhóm DingTalk. Sau đó nhấp vào Đồng ý với thỏa thuận để hoàn tất. Cuối cùng, sao chép địa chỉ Webhook để sử dụng sau.

4. Triển khai mã

Sau khi có được địa chỉ Webhook, chúng ta có thể khởi tạo yêu cầu HTTP POST tới địa chỉ này trong Inventor Quantitative Strategy để gửi thông tin tới nhóm DingTalk này. Cần lưu ý rằng khi khởi tạo yêu cầu POST, bộ mã hóa ký tự phải được đặt thành UTF-8.

import requests
import json
from datetime import datetime, timedelta, timezone


# 向钉钉群输出信息
def msg(text):
    token ="0303627a118e739e628bcde104e19cf5463f61a4a127e4f2376e6a8aa1156ef1"
    headers = {'Content-Type': 'application/json;charset=utf-8'}  # 请求头
    api_url = f"https://oapi.dingtalk.com/robot/send?access_token={token}"
    json_text = {
        "msgtype": "text",  # 信息格式
        "text": {
            "content": text
        }
    }
    # 发送并打印信息
    Log(requests.post(api_url, json.dumps(json_text), headers=headers).content)

    
# 测试函数
def onTick():
    arr = ['BTC', 'ETH', 'XRP', 'BCH', 'LTC']  # 主流数字货币
    # 获取东八区时间
    bj_dt = str(datetime.now().astimezone(timezone(timedelta(hours=8))))
    bj_dt = bj_dt.split('.')[0]  # 处理时间
    text = f'{bj_dt}\n'  # 定义信息内容
    for i in arr:  # 循环主流数字货币数组
        exchange.IO("currency", f"{i}_USDT")  # 切换交易对
        ticker = exchange.GetTicker().Last  # 获取最新价格
        if i == 'LTC':
            full = ' :'
        else:
            full = ':'
        text = text + f"{i}/USDT{full}${ticker}\n"  # 处理信息内容
    msg(text)  # 调用msg函数,输出信息
    

# 策略入口
def main():
    while True:  # 进入无线循环
        onTick()  # 执行onTick函数
        Sleep(1000 * 60)  # 休眠一分钟

Khi tùy chỉnh robot để đồng bộ hóa thông tin, bạn có thể cài đặt số điện thoại di động của nhiều thành viên nhóm. Khi các thành viên nhóm @ nhận được tin nhắn, họ sẽ được nhắc nhở bằng tin nhắn @, ngay cả khi chế độ Không làm phiền được thiết lập.

# 向钉钉群输出信息
def msg(text):
    token = "0303627a118e739e628bcde104e19cf5463f61a4a127e4f2376e6a8aa1156ef1"
    headers = {'Content-Type': 'application/json;charset=utf-8'}  # 请求头
    api_url = f"https://oapi.dingtalk.com/robot/send?access_token={token}"
    json_text = {
        "msgtype": "text",  # 信息格式
        "text": {
            "content": text
        },
        "at": {
            "atMobiles": [
                "16666666666",  # 被@的手机号码
                "18888888888"  # 被@的手机号码
            ],
            "isAtAll": False  # 不@所有人
        }
    }
    # 发送并打印信息
    Log(requests.post(api_url, json.dumps(json_text), headers=headers).content)

5. Kiểm tra robot

Trong đoạn mã trên, chúng tôi đã viết một trường hợp để lấy giá của các loại tiền kỹ thuật số chính thống mỗi phút và đẩy thông tin này đến nhóm DingTalk: Gọi API DingTalk để triển khai tin nhắn đẩy robot Gọi API DingTalk để triển khai tin nhắn đẩy robot