我目前正在开展一个小项目,只要在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。
再次感谢!
答案 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()
对于您要完成的任务,您无需对订单数据执行任何操作, 但检查和/或记录可能会很好。