Chame a interface Dingding para realizar mensagem de push do robô

Autora:Lydia., Criado: 2022-12-20 08:57:16, Atualizado: 2023-09-20 09:09:55

img

Chame a interface Dingding para realizar mensagem de push do robô

1. Resumo

Em transações reais, para saber o status de negociação do robô FMZ Quant no tempo, às vezes precisamos enviar os resultados da transação executada pelo robô para WeChat, e-mail, SMS, etc. No entanto, há centenas de tipos diferentes de informações todos os dias, o que o torna insensível a essas informações, levando ao fracasso da coleta oportuna de informações importantes.

2. Robô do grupo Dingding

O robô de grupo Dingding é uma função de extensão avançada. Desde que haja uma conta Dingding, você pode usá-lo. Ele pode agregar as informações de terceiros no grupo Dingding para alcançar a sincronização automática de informações. Ele suporta o acesso personalizado do protocolo Webhook e agrega o lembrete, alerta e outras informações no grupo Dingding através do robô FMZ Quant. Três formatos de mensagem e cinco tipos de mensagem são suportados: texto, link e marcação. A mesma mensagem também pode ser enviada para vários grupos Dingding ao mesmo tempo. Veja o link oficial:https://ding-doc.dingtalk.com/doc#/serverapi2/ye8tup

3. Crie um robô

Passo 1: Crie um grupo de Dingding

img

Cada robô personalizado criado no grupo Dingding gerará um endereço de gancho exclusivo, chamado endereço WebHook. O grupo Dingding receberá uma mensagem empurrando uma mensagem para o endereço WebHook. Vamos tomar a versão para PC do Dingding como exemplo. Primeiro, clique no sinal + no canto superior esquerdo para iniciar um bate-papo em grupo. Se você quiser aceitar a mensagem sozinho, você pode selecionar duas pessoas e expulsar-as.

Passo 2: Adicionar o robô do grupo Dingding

Clique no avatar, selecione Gerenciamento de Robôs, em seguida, selecione Personalizado e clique em Adicionar.

img

  • Palavra-chave definida pelo utilizador: as informações só serão sincronizadas se conterem esta palavra-chave.
  • Assinatura: equivalente a definir uma palavra-passe.
  • Endereço IP: segmento de endereço IP de informações fixas de terceiros.

Se ele é usado apenas para lembrete ou alerta, selecione a palavra-chave definida pelo usuário. A palavra-chave que definimos aqui é :, ou seja, quando a informação empurrada pelo FMZ Quant Robot contém :, a informação será empurrada para o grupo Dingding. Em seguida, clique em Concordar para concluir o acordo. Finalmente, copie o endereço Webhook para backup.

4. Implementação do código

Depois de obter o endereço Webhook, podemos enviar as informações para o grupo Dingding enviando uma solicitação HTTP POST para o endereço na estratégia FMZ Quant.

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


# Output information to Dingding group
def msg(text):
    token ="0303627a118e739e628bcde104e19cf5463f61a4a127e4f2376e6a8aa1156ef1"
    headers = {'Content-Type': 'application/json;charset=utf-8'}  # Request header
    api_url = f"https://oapi.dingtalk.com/robot/send?access_token={token}"
    json_text = {
        "msgtype": "text",  # Message type
        "text": {
            "content": text
        }
    }
    # Send and print messages
    Log(requests.post(api_url, json.dumps(json_text), headers=headers).content)

    
# Test functions
def onTick():
    arr = ['BTC', 'ETH', 'XRP', 'BCH', 'LTC']  # Mainstream digital currencies
    # Get the time of East Zone 8
    bj_dt = str(datetime.now().astimezone(timezone(timedelta(hours=8))))
    bj_dt = bj_dt.split('.')[0]  # Time of processing
    text = f'{bj_dt}\n'  # Define information content
    for i in arr:  # Loop mainstream digital currency array
        exchange.IO("currency", f"{i}_USDT")  # Switch trading pairs
        ticker = exchange.GetTicker().Last  # Get the latest price
        if i == 'LTC':
            full = ' :'
        else:
            full = ':'
        text = text + f"{i}/USDT{full}${ticker}\n"  # Processing information content
    msg(text)  # Call msg function to output information
    

# Strategy entrance
def main():
    while True:  # Enter infinite loop 
        onTick()  # Execute onTick function
        Sleep(1000 * 60)  # Sleep for one minute

Quando um robô personalizado sincroniza informações, ele pode definir o número de telefone móvel para @ vários membros do grupo. Quando o membro do grupo recebe a mensagem, haverá um lembrete de mensagem @. O lembrete ainda será notificado mesmo se a sessão Não perturbar for definida.

# Output information to Dingding group
def msg(text):
    token = "0303627a118e739e628bcde104e19cf5463f61a4a127e4f2376e6a8aa1156ef1"
    headers = {'Content-Type': 'application/json;charset=utf-8'}  # Request header
    api_url = f"https://oapi.dingtalk.com/robot/send?access_token={token}"
    json_text = {
        "msgtype": "text",  # Message type
        "text": {
            "content": text
        },
        "at": {
            "atMobiles": [
                "16666666666",  # Phone number of the @
                "18888888888"  # Phone number of the @
            ],
            "isAtAll": False  # Not @ Everyone
        }
    }
    # Send and print messages
    Log(requests.post(api_url, json.dumps(json_text), headers=headers).content)

5. Robô de teste

No código acima, escrevemos um caso para obter o preço da moeda digital principal a cada minuto e enviar essas informações para o grupo Dingding:img


Relacionados

Mais.