Continuing a conversation after account linking using google in dialogflow - node.js

In google dialogflow using node js , i have used the account linking feature to store user data into the database. After the signin intent, i want to trigger welcome intent or any other intent. Now its getting signed in and nothing happens after that.How to trigger the next intent without getting response from the user? Now its getting signed in and nothing happens after that. What am i doing wrong?

If you wish to continue the conversation after a sign-in has been completed have a look at the sign-in helper. This will allows you to create an intent with the event for sign-in and it will allow you to continue the conversation.
If you handover from a speaker to a phone your conversation will always end, the user will have to sign-in and restart the conversation if you use that.

Related

DialogFlow Manual Handover to Facebook Messenger

I've successfully setup a DialogFlow bot which integrates with Facebook Messenger.
Is it possible for a human user to log into the Facebook Messenger inbox and take manual control over the conversation?
When I log into the Facebook Messenger inbox I've been unable to stop the bot from replying to the user and as a result it ends up being a 3 way conversation between me, the user and the bot.
This usecases makes sense but is not well documented. Facebook mentions this in the handover protocol documentation:
Taking Thread Control From Facebook Page Inbox
For Messenger experiences that enable live chat via Facebook Page Inbox, the handover protocol allows the Page admin to manually initiate a take thread control event by moving the conversation from 'Done' to the 'Inbox'. It is important to note that the thread would immediately be passed to Facebook Page Inbox irrespective of the current app’s role.
I guess this is what you need.
What you need to do is this:
Find the conversation you want to manual control
Check 'Move to Done'
FInd the conversation again by adding the 'done'-filter
Click the Move to Main button (the envelop in the top right
corner)
Remove the 'done' filter to find the conversation
from now on, the inbox has control and your chatbot will not respond if the user types a message. You will be the only one responding
If you need the chatbot to manage the conversation again, just click on the Move to Done-checkmark and the chatbot has control again.
Ps: the documentation also suggests you to subscribe to two webhooks (Standby and messaging-handovers). To be honest: for me it worked with and without subscribing to these webhooks

Retrieving userdata directly after user completes acount linking on their phone

I'm building an application using Accountlinking for a Google Home speaker using the Actions On Google SDK. I am using the Oauth feature which allows a user to sign-in into an account on their phone by sending them a link with a login window.
When the sign-in is triggered, the conversation on the Google speaker is ended. I would like to use some user information that comes from the accountlinking process right after the user is done with the accountlinking.
When you build a conversation for assistant on mobile, you can await the actions.intent.SIGN_IN event to continue the conversation, but even when you implement this, a conversation for the speaker will end.
Is there any way to use user information directly after a user linked
their account for a Google Home speaker app without users having to restart the conversation?
Once the user has to jump to the phone to perform account linking, the conversation on the speaker ends since the context has shifted devices. After account linking finishes, you could try to transfer to a new surface, although you will not necessarily have the ability to go back to the original device.

Maintaining a chat between user and agent using Google Actions

I am creating an app using Dialogflow and Actions on Google Node.js library.
The logic I am trying to implement is as follows:
User says: Initiate chat.
That user request triggers my webhook which then supplies the agent response.
User replies back to the agent - this is the tricky part because the user reply can be anything, thus the wrong Intent or the Fallback Intent can be triggered.
Is there a way to allow for the unpredictability of a user's response and to keep conversation going between user and agent? In another words, always trigger the same Intent (Chat Intent) regardless of what the user says?
In Dialogflow, you can configure the Default Fallback Intent to connect to web fulfillment. In your fulfillment, you can then route the user's query to your webhook and process a response however you'd want.

Action on Google sign-in doesn't trigger intent after login

I have a assistant app where some of the intents are only available after you do account linking. To be able to have a seamless onboarding when a intent is triggered that require sign-in the sign-in flow is triggered and after the intent is resolved.
I've used the sign-in helper and that works, but when the sign-in is done it gives a error message "Sorry, something went wrong, so I couldn't sign you in. But you can try again later."
If the app is triggered again the user is signed-in and everything works as it should.
I'm running the webhook as a firebase function
Any advice how I can do this ?
After the Sign-In helper completes, it sends an actions_intent_SIGN_IN event. You should capture this event in a Dialogflow Intent and then handle it in a handler for this event. The handler should call the same thing that the handler for the usual event would call.

How to trigger a request every time my app is invoked

I am developing a google assistant app using api.ai. I want to trigger a request to Google People API every time the app is invoked to get email address of the user.
I have added the request in action mapped to Default Welcome intent and stored the email address fetched into app.data. It works fine when I say "Talk to my test app". But when I add a user expression that invokes another action like "Talk to my test app and do something...", welcome intent is not invoked and request is not made.
What should I do implement this.
The correct way to implement this is to use account linking. You should implement an oauth2 server, flag as SIGN IN the welcome intent or other intents in api.ai. When you perform the account linking you can grab the user email and then you can use the same email to the following request using the access token API.AI will forward to your fulfillment.

Resources