Как создать вебхук для 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 шт):

Автор решения: Violet

При подключении 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

→ Ссылка