2017-04-25 2 views
0

현재 저는 Shopify에서 새로운 주문이 생성 될 때마다 내 라스베리 파이가 유니콘을 밝히는 작은 프로젝트에 참여하고 있습니다. 필자는 이전에 웹 훅이나 웹 서버를 사용 해보지 않았으며, 플라스 크나 자파는 이전보다 훨씬 작았습니다. 파이를 내 홈 네트워크의 개방형 인터넷에 노출시키지 않고 어떻게 설정할지 궁금했습니다.웹 후크를 받기 위해 라즈베리 파이를 설정하는 방법

나는 Flask와 Zappa와 함께 Amazon의 Lambda를 사용하는 것이 간단 할 것이라고 읽었지 만, 나는 길을 잃었습니다.

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 쇼에서 내 경험 부족이 동안 내 머리를 두드리는 있었어요 : 이것은 내가 지금까지있는 것입니다. 정확한 웹 훅 (webhook)을 듣기 위해 Shopify의 API 정보를 올바르게 읽었는지 확실하지 않습니다.

다시 한번 감사드립니다!

답변

1

Shopify에는 웹 훅을 등록 할 수있는 파이썬 모듈 shopifyapi이 있습니다.

import shopify 

shop_url = "https://%s:%[email protected]%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() 

그것은 당신의 파이의 주소로 order data를 보낼으로 webhook를 호출 생성 된 명령을 수행 일단. 추가 이벤트의 경우 트리거로 사용할 수 있습니다 (API docs 참조).

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

를 들어 당신이 당신이 주문 데이터를 을 아무것도 할 필요가 없습니다 달성하기 위해 노력하고 있지만 검사하는 것이 좋을 수 있으며 :

귀하의 플라스크 응용 프로그램은이 같은 게시물을 받아 들일 수/또는 로그.

+0

감사합니다. – Tadhg