如何设置 Raspberry Pi 来接收 webhook

How to setup a Raspberry Pi to receive webhooks

我目前正在做一个小项目,只要在 Shopify 上创建新订单,我的 raspberry pi 就会点亮独角兽帽。我从来没有使用过 webhooks 或 Web 服务器,更不用说 Flask 或 Zappa 了,我很好奇如何设置它而不将 pi 暴露在我家庭网络上的开放互联网上。

我读到过将 Amazon 的 Lambda 与 Flask 和称为 Zappa 的东西结合使用很容易做到这一点,但是我很迷茫。这是我目前所拥有的:

from time import sleep
from flask import Flask, request
import unicornhat as unicorn
import light.py

app = Flask(__name__)
@app.route('/', methods = ['POST'])

def index():
    data = request.get_json()
    if data['orders/create'] == null:
        light.light() //lights uHat on new order creation
    return "Success"

任何指点将不胜感激,几周来我一直在努力解决这个问题(在我的业余时间)并且我在 webdev 显示方面缺乏经验。我什至不确定我是否正确阅读了 Shopify 的 API 信息以使其监听正确的 webhook。

再次感谢!

Shopify 有一个 Python 模块,shopifyapi 允许您注册您的 webhook。

import shopify

shop_url = "https://%s:%s@%s.myshopify.com/admin" % (API_KEY, PASSWORD, SHOP_NAME)
shopify.ShopifyResource.set_site(shop_url)
shopify.Session.setup(api_key=API_KEY, secret=SHARED_SECRET)

new_webhook = shopify.Webhook()
new_webhook.address = 'http://your.pi.address'
new_webhook.topic = 'orders/create'
new_webhook.save()

完成后,创建的任何订单都将调用 webhook 将 order data 发送到您的 pi 地址。 有关可用作触发器的其他事件,请参阅 API docs

您的 Flask 应用可以接受这样的帖子:

from flask import Flask, request
import light

app = Flask(__name__)

@app.route('/', methods = ['POST'])
def index():
    data = request.json  # optional
    light.blink()
    return "Success"

if __name__ == '__main__':
    app.run()

对于您要实现的目标,您不需要对订单数据做任何事情, 但检查 and/or 日志可能会很好。