Why insert request got an error response via Youtube API? - google-api

I request an insert api via Youtube API for starting live streaming and I got an error such as below image.
I knew that it's available live streaming with other tools.(refer to https://support.google.com/youtube/answer/2853834)
I have submitted their review request for using a scopes, and our project was accepted by them.
Same request with other client ID is working, but my clientId not working.
Can you explain why it happens?

To be able to live stream on mobile, your channel will need to have at least 1,000 subscribers.
link

Related

Live streams health status polling in YouTube v3 API

I have multiple live streams to YouTube being pushed 24/7 from IP cameras. In YouTube studio live stream interface, there is a column per live stream showing health of inbound connection & data.
(see snip below).
This shows for each currently 'live' live stream if the inbound data rate is 'excellent', 'good', 'poor', or 'no data'. I have to believe if the YouTube studio live interface is able to poll and display this, it should be available in the YouTube live v3 API.
However, I can't find anything on it. My need is I want to create automation to query status every 15 min or so and alert me if one of my camera sources goes down. Does anyone have insights on where to get this from the YouTube v3 API?
The answer to your question is straightforward:
Use the LiveStreams.list API endpoint, queried with the request parameter mine set to true and look for the following property of the JSON response:
status.healthStatus (string)
The status code of this stream.
Valid values for this property are:
good – There are no configuration issues for which the severity is warning or worse.
ok – There are no configuration issues for which the severity is error.
bad – The stream has some issues for which the severity is error.
noData – YouTube's live streaming backend servers do not have any information about the stream's health status.
Also, don't forget to pass status to the request parameter part too.

MS Teams Incoming Webhook issue

I've created an incoming Teams Webhook connector within a Teams group (using the method below).
I can successfully curl to the webhook internally and get the message to display ok.
MS have checked my tenant and access is as expected.
When I apply my URL for the webhook to any external service they eventually come back stating there was a problem detected with the webhook (Please make sure that your webhook endpoint of xxx is responding with a 2xx response code within 30 seconds of initial connection.)
Can anyone advise what else may need to be done?
Thanks
In Microsoft Teams, choose More options (⋯) next to the channel name and then choose Connectors.
Scroll through the list of Connectors to Incoming Webhook, and choose Add.
Enter a name for the webhook, upload an image to associate with data from the webhook, and choose Create.
Copy the webhook to the clipboard and save it. You'll need the webhook URL for sending information to Microsoft Teams.
Choose Done.
Incoming webhooks are special type of Connector in Teams that provide a simple way for an external app to share content in team channels and are often used as tracking and notification tools. Teams provides a unique URL to which you send a JSON payload with the message that you want to POST, typically in a card format. Cards are user-interface (UI) containers that contain content and actions related to a single topic and are a way to present message data in a consistent way. Please test the incoming webhook url using postman and let us know the payload result or status code. Would be help full for us to understand more.

Google Meet integration api (like Hangouts app for Slack)

I want to utilise Google Meet api, which is used in Hangouts integration for Slack, description follows
TL;DR:
Links such as https://meet.google.com/new?gid=123&gd=qwe987 can be generated, so a modal is shown which can ask user's confirmation and then some request is sent from user's browser (where the Google Meet page is opened) to some endpoint (probably it is determined from gid which seems to be google application id). Is there a way to configure my application to have a webhook, so I can generate these custom links?
There's Google+ Hangouts app for Slack. Here's how it works (after you add the app in your workspace):
you send /hangout command in any Slack channel
slackbot sends an "Only visible to you" message in this channel with a link to start a new hangout. it looks smth like this (I changed data in the link): https://meet.google.com/new?gid=691521906844&gd=THTJ30X6W%7CU01113BD13M%7CD01113BDB5Z%7Csuren%7C%7C1846381238693%7C1%7CB01QFGG5GJF%7CE1MDm4DWcuVa0RbN5ZT9o5KF
when you visit the link, a new meeting is started instantly, and the page shows modal with text "To bring others into this video call, post a link it to your Slack channel" with buttons 'Cancel' and 'Post'.
when you click 'Post', a new message is sent to the Slack channel, where the command was sent. Text is "#Suren Khorenyan has started a Google+ Hangout and would like you to join. Join Hangout." and contains a link to the meet, which was created previously
How can I utilise this integration for another app, like Mattermost (or anything else like Telegram chats via bots)?
As I see, data in the url slightly changes. Probably it's payload for Google Meet to trigger Slack to send a message with link to the channel.
gid seems to be something like google app id
gd seems to be something like google data. If I url-decode it, it becomes THTJ30X6W|U01113BD13M|D01113BDB5Z|suren||1846381238693|1|B01QFGG5GJF|E1MDm4DWcuVa0RbN5ZT9o5KF. This is some kind of payload, separated by pipes (obviously), but I don't know what any part of this means (suren is my username in the Slack workspace, probably this is used for creating an invitation message).
When I click Post, this happens:
a new POST request to https://hooks.slack.com/services/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 is sent with form-data
hangout_id: 1812381238693
hangout_url: https://meet.google.com//abc-iuqx-def
a new message is posted to the Slack channel
Google meet somehow knows where to post back! Is this configured at the Google application (application id is provided via gid)? How can I configure my application for such behaviour? Where can I setup webhook url?
If we breakdown the request, we can see that url contains some parts of the gd payload:
THTJ27X6W - this is the first part of the gd payload
B01ABCD5GJF - last but one
E1MDm4DWcuVa0RbK5ZT9o5KD - the last part of the gd payload
and form-data contains:
hangout_id - this is in the gd payload after my name
hangout_url - obviously, this is the url for the new created meeting
How can I change it for my needs?
I created a new application at Google APIs dashboard (here console.developers.google.com/apis), but can't find any docs for this integration. There's Google+ Hangouts API in API Library, but it says Apps will continue to function until April 25, 2017..
I tried to approach it from another side:
In the API Library there's Google Calendar. I found mattermost-hangout app on GitHub (had to update it a bit, so it works with updated api). Here's how it works:
oauth2 for authorising at google (single account)
it handles POST request, which is meant to be received from Mattermost (triggered by a slash command),
creates a new calendar event using Google Calendar API (with conference),
takes hangouts url from the response and sends a new message in the Mattermost channel with invitation to join the meeting.
But it has some downsides:
you have to use one account to authorise all event creation events (yeah, it can be upgraded to authorise any number of users, but it'll be inconvenient. why to force anyone to provide access to their Google Account, when Google Meet authorisation just happens in browser, we don't need to create events)
account, used for auth, now has events in his calendar. of course, events can be deleted, but it's not the way.
Is there any documentation on utilising gid and gd params?
Generally, I want to find a way to configure a webhook in my app, so when Google Meet finds my application's ID in the gid query param, it looks at the app's config and sends a request to my app (previously configured endpoint (I assume it works this way)).
Of course there's a chance that it's some kind of internal API and it cannot be used by everyone, but I could not find any information on this.

I have a question about the error "The user is blocked from live streaming"

My app users whose account has less than 1,000 subscribers are blocked from live-streaming.
liveBroadcasts.insert API request (https://developers.google.com/youtube/v3/live/docs/errors#liveBroadcasts_youtube.liveBroadcasts.insert)
POST
https://www.googleapis.com/youtube/v3/liveBroadcasts?part=id%2Csnippet%2Cstatus&fields=id&key={YOUR_API_KEY}
error message:
The user is blocked from live streaming. (
extendedHelp: https://support.google.com/youtube/answer/2853834 )
However,
we created another project at https://console.developers.google.com and made new Credentials, OAuth 2.0 client ID for Android.
and we tested it with sames package name and the error does not appear.
Also, Google play there are many other apps with similar live streaming features and they let streaming with less than 1,000 subscribers subscribers without any problems.
I wonder if there is any specific policy about Restrictions on live streaming and project-id.

How to request botstate users on Microsoft Teams via Rest

If I send the Get request /v3/botstate/{channelId}/users/{userId} request to the emulator, it returns JSon. Nothing very useful of course since there aren't any real users in it. (doc referenced for the request https://docs.botframework.com/en-us/restapi/state/#/ and https://docs.botframework.com/en-us/csharp/builder/sdkreference/stateapi.html#getsetproperties)
If I send it to Teams, I get a 500 Server error. No additional information is returned with the error, it just repeats that there was a server error.
When I have gotten a 500 sending to Teams before, it was related to the JSon payload being sent. In this case, there is no payload.
The request is in response to a "message" my bot received, and I am passing along the channelId and from.id from that "message" as my parameters.
I am able to send Post "message" requests back, and the Get request /v3/conversations{conversationId}/members successfully, so my Bot seems to be setup correctly.
Anyone have any ideas?
There was a temporary issue with Teams this week. It has been fixed.
The ServiceUrl is not guaranteed to stay the same. It should be refreshed periodically. Please see: https://docs.botframework.com/en-us/csharp/builder/sdkreference/routing.html#connectorclient
NOTE: Even though ServiceUrl values may seem stable bots should not
rely on that and instead always use the ServiceUrl value
As of today, the Bot Framework is still in preview. The developers do their best to not commit breaking changes. The product is under continuous and active development. Thank you for your patience as the kinks are worked out.
Microsoft Teams does not currently support retrieving user information beyond the ID returned in the members call, or the information received as part of incoming payloads. We should have better support for this coming soon.

Resources