So, I’m about to write a small chatbot written in python, so far, I can get the my user ID, create a subscription to /helix/channels and I get a 202.
I have a flask server running to handle the callback, I see the hub.challenge and return this (as 200 status).
Example code to subscribe to event the client side:
def subscribe_to_twitch_event():
headers = {‘Authorization’: ‘Bearer {0}’.format(get_twitch_api_token()[‘access_token’])
param_data = {
‘hub.mode’: ‘subscribe’,
#‘hub.topic’: ‘https://api.twitch.tv/helix/users/follows?first=1&to_id={0}'.format('XXXXX’),
‘hub.topic’: ‘https://api.twitch.tv/helix/streams?user_id={0}'.format('XXXXX’),
‘hub.callback’: ‘http://my-endpoint-server.net/1.0/foobar/twitch/callback’,
‘hub.lease_seconds’: ‘90’,
‘hub.secret’: ‘SECRET SHHH’,
}
response = requests.post(“https://api.twitch.tv/helix/webhooks/hub”, params=param_data, headers=headers, verify=True)
def get_twitch_subscriptions():
headers = {‘Authorization’: ‘Bearer {0}’.format(get_twitch_api_token()[‘access_token’])}response = requests.get("https://api.twitch.tv/helix/webhooks/subscriptions", headers=headers, verify=True) print response.json()
I see:
From the initial subscription: <Response [202]>
From the check of subscription: {u’pagination’: {}, u’total’: 1, u’data’: [{u’topic’: u’https://api.twitch.tv/helix/streams?user_id=XXXXX’, u’callback’: u’http://my-endpoint-server.net/1.0/foobar/twitch/callback’, u’expires_at’: u’2018-10-24T07:27:03Z’}]}
Looks good
On the Callback side twitch is sending:
34.217.244.123 - - [24/Oct/2018 03:25:50] “GET /1.0/foobar/twitch/callback?hub.challenge=-MVIY_JIdhwLhG4icinviIMWz8gsG3pRogqIDmjg&hub.lease_seconds=90&hub.mode=subscribe&hub.topic=https%3A%2F%2Fapi.twitch.tv%2Fhelix%2Fstreams%3Fuser_id%3DXXXXXXXX HTTP/1.1” 200 -
In the GET for /1.0/foobar/twitch/callback I return the hub.challenge value the API returns 200 for http status.
When I go online, change title of stream with Streamlabs OBS, I am not getting callbacks to the POST for /1.0/foobar/twitch/callback. Doesn’t seem to be telling me there’s a response coming back.
@app.route(‘/1.0/foobar/twitch/callback’, methods=[‘GET’, ‘POST’])
def _twitch_callback():
if request.method == ‘GET’:
challenge = request.args.get(‘hub.challenge’)
print(“Challenge is: {0}”.format(challenge))
return challenge
else:
print(“GOT A POST CALL!!!”)
Whats wrong?
I also don’t see any API method to let me change the stream channel title, or any way to get the stream/channel ID to change the title with the Helix API or this isn’t implemented yet?
Thanks,
Shawn.