如何设置Raspberry Pi来接收webhooks

时间:2017-04-25 02:10:31

标签: python flask raspberry-pi shopify

我目前正在开展一个小项目,只要在Shopify上创建新订单,我的覆盆子pi就会点亮。我以前从未使用过webhooks和Web服务器,更不用说Flask或者Zappa了,我很好奇我如何设置它而不将pi暴露在家庭网络上的开放式互联网上。

我曾经读过,使用亚马逊的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。

再次感谢!

1 个答案:

答案 0 :(得分:1)

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()

对于您要完成的任务,您无需对订单数据执行任何操作, 但检查和/或记录可能会很好。