Rufen Sie die DingTalk-API auf, um Roboter-Push-Nachrichten zu implementieren

Erstellt in: 2020-07-02 12:03:23, aktualisiert am: 2023-09-28 21:08:12
comments   4
hits   4204

Rufen Sie die DingTalk-API auf, um Roboter-Push-Nachrichten zu implementieren

I. Zusammenfassung

Um über den Handelsstatus des Inventor Quant Robot bei realen Transaktionen auf dem Laufenden zu bleiben, müssen wir die vom Roboter ausgeführten Handelsergebnisse manchmal an WeChat, E-Mail, Textnachrichten usw. senden. Da die Menschen jedoch täglich Hunderte von Nachrichten unterschiedlicher Art erhalten, reagieren sie nicht mehr sensibel auf diese Nachrichten, was dazu führt, dass sie wichtige Nachrichten nicht rechtzeitig abrufen können. Daher implementiert dieser Artikel den Roboter-Nachrichten-Push durch Aufrufen der DingTalk-Gruppenschnittstelle.

2. DingTalk-Gruppenroboter

Der DingTalk-Gruppenroboter ist eine erweiterte Funktion. Solange Sie ein DingTalk-Konto haben, können Sie ihn verwenden. Es kann Informationen von Drittanbietern in der DingTalk-Gruppe aggregieren und eine automatische Synchronisierung von Informationen realisieren. Es unterstützt den benutzerdefinierten Zugriff auf das Webhook-Protokoll und aggregiert Erinnerungen, Alarme und andere Informationen über den Inventor Quantitative Robot in der DingTalk-Gruppe. Unterstützt drei Nachrichtenformate: Text, Link und Markdown sowie fünf Nachrichtentypen. Die gleiche Nachricht kann auch gleichzeitig an mehrere DingTalk-Gruppen gesendet werden. Siehe den offiziellen Link: https://ding-doc.dingtalk.com/doc#/serverapi2/ye8tup

3. Erstellen Sie einen Roboter

Schritt 1: Erstellen Sie eine DingTalk-Gruppe Rufen Sie die DingTalk-API auf, um Roboter-Push-Nachrichten zu implementieren Jedes Mal, wenn ein benutzerdefinierter Roboter in einer DingTalk-Gruppe erstellt wird, wird eine eindeutige Hook-Adresse generiert, die wir als WebHook-Adresse bezeichnen. Durch das Senden von Nachrichten an die WebHook-Adresse empfängt die DingTalk-Gruppe die Nachrichten. Nehmen wir als Beispiel DingTalk auf dem PC. Klicken Sie zunächst auf das „+“-Zeichen in der oberen linken Ecke, um einen Gruppenchat zu starten. Wenn Sie nur selbst Nachrichten erhalten möchten, können Sie nach dem Zufallsprinzip zwei Personen hinzufügen und sie dann rauswerfen. Füllen Sie im Gruppennamen: „FMZ Robot“ und wählen Sie „Normal“ als Gruppentyp. Einfach gruppieren.

Schritt 2: DingTalk-Gruppenroboter hinzufügen Klicken Sie auf Ihren Avatar, wählen Sie „Roboterverwaltung“, wählen Sie dann „Anpassen“ und klicken Sie auf „Hinzufügen“. Passen Sie den Roboternamen „FMZ“ an und fügen Sie ihn der gerade erstellten DingTalk-Gruppe hinzu. Der Roboter unterstützt drei Sicherheitseinstellungen: Rufen Sie die DingTalk-API auf, um Roboter-Push-Nachrichten zu implementieren

  • Benutzerdefinierte Schlüsselwörter: Informationen werden nur synchronisiert, wenn sie dieses Schlüsselwort enthalten.
  • Signatur hinzufügen: entspricht dem Festlegen eines Passworts.
  • IP-Adresse: Das IP-Adresssegment der festen Drittanbieterinformationen. Rufen Sie die DingTalk-API auf, um Roboter-Push-Nachrichten zu implementieren Rufen Sie die DingTalk-API auf, um Roboter-Push-Nachrichten zu implementieren Wenn es nur für Erinnerungen oder Alarme verwendet wird, wählen Sie einfach benutzerdefinierte Schlüsselwörter aus. Das Schlüsselwort, das wir hier definieren, ist „:“. Dies bedeutet, dass, wenn die vom Inventor Quant-Roboter gesendeten Informationen „:“ enthalten, diese Informationen an die DingTalk-Gruppe gesendet werden. Klicken Sie anschließend auf „Zustimmen“, um die Vereinbarung abzuschließen. Kopieren Sie abschließend die Webhook-Adresse zur späteren Verwendung.

4. Code-Implementierung

Nachdem wir die Webhook-Adresse erhalten haben, können wir in der Inventor Quantitative Strategy eine HTTP-POST-Anfrage an diese Adresse initiieren, um Informationen an diese DingTalk-Gruppe zu senden. Zu beachten ist, dass beim Auslösen eines POST Requests die Zeichensatzkodierung auf UTF-8 eingestellt sein muss.

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)  # 休眠一分钟

Wenn Sie Roboter zum Synchronisieren von Informationen anpassen, können Sie die Mobiltelefonnummern mehrerer Gruppenmitglieder festlegen. Wenn die Mitglieder der @-Gruppe die Nachricht erhalten, werden sie durch die @-Nachricht daran erinnert, auch wenn die „Nicht stören“-Sitzung eingestellt ist.

# 向钉钉群输出信息
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. Testen des Roboters

Im obigen Code haben wir einen Fall geschrieben, um jede Minute die Preise der gängigen digitalen Währungen abzurufen und diese Informationen an die DingTalk-Gruppe zu senden: Rufen Sie die DingTalk-API auf, um Roboter-Push-Nachrichten zu implementieren Rufen Sie die DingTalk-API auf, um Roboter-Push-Nachrichten zu implementieren