Как создать вебхук для tilda. Интеграция tilda cc и iiko biz
дорогие коллеги. Возникла проблема с интеграцией tilda (webhook) и iiko biz
Моя задача состоит в том, чтобы заказы с сайта по api направлялись на страницу iiko. Написан код на костылях, на flask. Но, видимо, из-за нехватки опыта я упускаю какие-то важные элементы. Вот, допустим, tilda не принимает файл и выдает вот такую ошибку:
Webhook URL not available. Error code: 405 (http code must be 200 or 201) HTTP/1.1 405 Method Not Allowed Server: nginx Date: Wed, 09 Dec 2020 11:23:38 GMT Content-Type: text/html; charset=utf-8 Content-Length: 178 Connection: keep-alive Allow: GET, OPTIONS, HEAD X-Powered-By: Phusion Passenger 5.3.7 Status: 405 Method Not Allowed X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff 405 Method Not Allowed Method Not Allowed The method is not allowed for the requested URL. URL must response less 5 seconds and accept POST query: test=test**
А вот сам мой flask-test.py:
import requests
import json
from flask import Flask
from flask import request
login = 'apilogin'
password = 'passapi'
class Biz:
def __init__(self, login, password):
self.login = login
self.password = password
self.address = 'https://card.iiko.co.uk/api'
def token(self):
try:
r = requests.get(self.address + '/0/auth/access_token?user_id=' + self.login + '&user_secret=' + self.password)
r.text[1:-1]
return r.text
except requests.exceptions.ConnectTimeout:
print("Не удалось получить токен " + "\n" + self.login)
i = Biz(login, password)
token = i.token()
print('Token: ', token)
application = Flask(__name__)
@application.route('/')
def hello_world():
return token
@application.route('/home')
def set_hook():
if request.method == 'POST':
name_ = request.form.get('user_order')
phone_ = request.form.get('order_phone')
address_ = request.form.get('order_address')
delivery_ = request.form.get('order_delivery')
comment_ = request.form.get('order_comment')
else:
return 'Hello from Vegas'
if __name__ == '__main__':
application.run(host='195.54.163.133')
Подскажите, как решить эту проблему? Уже не знаю куда копать...
Ответы (1 шт):
При подключении Webhook на стороне Tilda ваш обработчик должен ответить test в течении 5 секунд на POST запрос test:
поэтому делаем вот так:
@app.route('/', methods=['POST'])
def test():
return 'test'
>>> 95.213.201.187 - - [14/Dec/2020 12:39:18] "POST / HTTP/1.1" 200 -
каждое изменение вебхука требует ответа на POST test

