Webhook sometimes sending blank "user_name"


#1

Hi I’m using node.js (no express atm) to get a stream goes live event webhook.

The webhook handshake works and notifications are sent to my discord webhook but sometimes the data I receive from twitch contains a blank “user_name” field.

Subscribing via hub.topic: https://api.twitch.tv/helix/streams?user_id=XXXXX

What I expect with both my user_name and user_id sent: https://puu.sh/CC0N9.png

What I seem to “randomly” receive:

{“community_ids”:[“3f35d6f4-1c06-4073-aa1e-4ffb52d6085f”,“739ca24b-ef02-4bad-b859-6953fb9b1cb1”,“8387b4ef-510b-4940-9876-e1787c8822de”],“game_id”:“18122”,“id”:“32386002304”,“language”:“en”,“started_at”:“2019-01-26T11:09:13Z”,“tag_ids”:null,“thumbnail_url”:“https://static-cdn.jtvnw.net/previews-ttv/live_user_todgins-{width}x{height}.jpg",“title”:"Prog? Afflock PoV”,“type”:“live”,“user_id”:“45748839”,“user_name”:"",“viewer_count”:0}

This results in the discord post randomly dropping streamers name, such as in this case (he restarted his stream 3 times after a crash and all 3 worked, but earlier stream has dropped data): http://puu.sh/CCzoi.png

Is this something on my end? Do I need to add some sort of delay on the code or is it literally Twitch just dropping the data from that field before it is sent?


#2

It’s a known issue with the API that is being worked on, so it’s not your code that is at fault.

The best way I can suggest to mitigate the issue is to keep a cache on your end of the user id’s and their corresponding usernames, that way when you need to make use of the username, such as in a Discord post, you get the username from your cache or database for that user_id and use that rather than attempting to use the user_name field which is sometimes missing.


#3

Thanks for that sanity check!

I’m going to request the game endpoint to grab game name from the ID so will try to poke at the users endpoint and grab a display name from the name ID.

Caching locally sounds like a great backup plan, again many thanks!

EDIT: For reference sending user ID from the streams subscription to the users endpoint to get user’s display name and login name seem like a solid workaround for now. Likewise game ID from streams subscription to games endpoint works fine too.