Обновление действий. json без использования CLI gactions - PullRequest
1 голос
/ 02 апреля 2020

Я создал Action в Google, используя Actions SDK. Я хочу иметь возможность обновлять действия. json программно на моем сервере. Я не хочу использовать помощник CLI. Существует ли REST API или какой-либо другой способ обновления этого файла?

1 Ответ

1 голос
/ 11 апреля 2020

Мне удалось понюхать связь между Google и действиями cli.

Обновление действия

Вот запрос curl, который вы можете использовать. Не забудьте добавить свой Bearer (авторизация) и после --data-binary вы включите свой actions.json. Последнее, что нужно сделать, это изменить URL-адрес конечной точки в конце с помощью идентификатора действия (замените testskill).

curl 
-H 'Host: actions.googleapis.com' 
-H 'content-type: application/json' 
-H 'authorization: Bearer AuthorisationKeyAsRandomStrings' 
-H 'user-agent: Gactions-CLI/2.2.4 (darwin; amd64; dev/NsZwRCulTKhlPxMfp)' 
--data-binary '{"localizedActionPackages":{"de":{"actions":[{"description":"Default welcome intent","fulfillment":{"conversationName":"testskill"},"intent":{"name":"actions.intent.MAIN","trigger":{"queryPatterns":["sprechen mit test skill"]}},"name":"MAIN"},{"description":"test intent","fulfillment":{"conversationName":"testskill"},"intent":{"name":"test_intent","parameters":[{"name":"color","type":"org.schema.type.Color"}],"trigger":{"queryPatterns":["suchen ein $org.schema.type.Color:color schuhe","kaufen ein $org.schema.type.Color:color shuhe","kaufen"]}},"name":"Test"},{"description":"ciao","fulfillment":{"conversationName":"testskill"},"intent":{"name":"ciao_intent","trigger":{"queryPatterns":["ciao","bye","pa"]}},"name":"Ciao"}],"conversations":{"testskill":{"name":"testskill","url":"https://ae8e6xx.ngrok.io/testskill"}},"locale":"de"}},"name":"agents/testskill"}' 
--compressed 'https://actions.googleapis.com/v2/agents/testskill:batchUpdateAllDraftActionPackages'

Но нет гарантии, что это сработает в будущем, потому что Google может измениться. конечная точка без уведомления кого-либо. Поэтому я рекомендую придерживаться действий кли.

Получение токена без группировок CLI

Вам необходимо посетить этот URL: https://accounts.google.com/signin/oauth/oauthchooseaccount?access_type=offline&client_id=237807841406-o6vu1tjkq8oqjub8jilj6vuc396e2d0c.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Factions.builder&state=state&o2v=1&as=ZmeGyvTUA3FLgRPS1_rd1A&flowName=GeneralOAuthFlow

После авторизации вы получите токен. Это должно быть отправлено с другим запросом curl. Вам нужно заменить PlaceYourUrlEncodedTokenHere на свой токен, но он должен быть в кодировке URL.

curl 
-H 'Host: accounts.google.com' 
-H 'content-type: application/x-www-form-urlencoded' 
-H 'authorization: Basic MjM3ODA3ODQxNDA2LW82dnUxdGprcThvcWp1YjhqaWxqNnZ1YzM5NmUyZDBjLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tOjZ1TlVQakZvd3pVRThTbGlWWlg2a2VZMA==' 
-H 'user-agent: Go-http-client/2.0' 
--data-binary "code=PlaceYourUrlEncodedTokenHere&grant_type=authorization_code&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob" 
--compressed 'https://accounts.google.com/o/oauth2/token'

После этого вы получите json ответ от Google, который содержит access_token. Это вы добавите к вашему запросу как Bearer.

...