Есть ли способ отправить запрос POST, чтобы расслабиться без использования Webhook? - PullRequest
0 голосов
/ 11 ноября 2019

Я пытался отправить POST запросов на мой слабый канал с помощью веб-хуков, но безрезультатно.
Всегда возвращает неверный запрос, независимо от того, что я делаю.
Есть ли способ отправить POST запрос на расслабление без использования webhooks?

EDIT: код, который я использую

import json
import urllib.request
#import botocore.requests as requests

def lambda_handler(event, context):
  webhook=event['webhook']
  #response = urllib.request.urlopen(message) 
  #print(response) 

  slack_URL = 'https://hooks.slack.com/services/mywebhookurl'

#  req = urllib.request.Request(SLACK_URL, json.dumps(webhook).encode('utf-8'))
  json=webhook
  json=json.encode('utf-8')
  headers={'Content-Type': 'application/json'}
  #urllib.request.add_data(data)
  req = urllib.request.Request(slack_URL, json, headers)
  response = urllib.request.urlopen(req)

1 Ответ

1 голос
/ 11 ноября 2019

Я думаю, что проблема возникает, когда вы кодируете свой JSON в utf-8. Попробуйте следующий скрипт.

import json
import requests

# Generate your webhook url at  https://my.slack.com/services/new/incoming-webhook/
webhook_url = "https://hooks.slack.com/services/YYYYYYYYY/XXXXXXXXXXX"
slack_data = {'text': "Hi Sarath Kaul"}

response = requests.post(webhook_url, data=json.dumps(slack_data),headers={'Content-Type': 'application/json'})
print response.status_code

Если вы хотите использовать urllib

import json
import urllib.request

import urllib.parse


url = 'https://hooks.slack.com/services/YYYYYYYYY/XXXXXXXXXXX'
data = json.dumps({'text': "Sarath Kaul"}).encode('utf-8') #data should be in bytes
headers = {'Content-Type': 'application/json'}
req = urllib.request.Request(url, data, headers)
resp = urllib.request.urlopen(req)
response = resp.read()

print(response)
...