es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Enviar mensaje a un canal de Slack a través del chat de Slack. ¿API de mensajería?

Aunque se ha hecho esta pregunta, estoy tratando de enviar un mensaje al canal de Slack a través de la API “chat.postMessage” de Slack. Puedes encontrar el enlace a la documentación de la API aquí.

Sin embargo, el mensaje no se está enviando al canal y estoy obteniendo el siguiente resultado:

successfully completed post_reports_to_slack and status code 200

El código es:

import requests

def post_image():
    url = "https://slack.com/api/chat.postMessage"
    data = {
        "token": "xoxb-7701412070-tooken",
        "channels": ['#channel_name'],
        "text":"Mensaje a enviar"
    }

    response = requests.post(
        url=url, data=data,
        headers={"Content-Type": "application/json"}
    )

    if response.status_code == 200:
        print("Se completó con éxito post_reports_to_slack "
              "y el código de estado es %s" % response.status_code)
    else:
        print("Error al publicar el informe en el canal de Slack "
              "y el código de estado es %s" % response.status_code)

post_image()

Además, también intenté enviar un archivo usando la API “post file”, lo cual funcionó correctamente. También utilicé webhooks, lo cual también funcionó correctamente. Sin embargo, quiero enviar un mensaje a través de la API “chat.postMessage”.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el código proporcionado está missing some información crucial. La función post_image() está nombrada incorrectamente y parece que no envía una imagen sino un mensaje de texto. Además, el parámetro channels espera una cadena, no una lista.

    Además, es posible que el token proporcionado no tenga los permisos correctos para enviar un mensaje al canal. Asegúrese de que se haya otorgado el permiso chat:write a la aplicación asociada con el token proporcionado.

    Para solucionar el código, intente cambiar la función post_image() a post_message() y modificar el parámetro channels para que solo acepte una cadena:

    import requests
    
    def post_message():
        url = "https://slack.com/api/chat.postMessage"
        data = {
            "token": "xoxb-7701412070-token",
            "channel": "#channel_name",
            "text": "Mensaje a enviar", 
        }
    
        response = requests.post(
             url=url, json=data,
             headers={"Content-Type": "application/json"}
        )
    
        if response.status_code == 200:
            print("Mensaje enviado correctamente al canal de Slack con código de estado %s" % response.status_code)
        else:
            print("Error al enviar el mensaje al canal de Slack con código de estado %s" % response.status_code)
    
    post_message()
    

    Este código ahora debería enviar correctamente un mensaje de texto al canal especificado. Si aún encuentra problemas, verifique los permisos de su aplicación de Slack y asegúrese de que el ámbito chat:write esté habilitado para el token de la aplicación.

Comments are closed.