Dialogflow Facebook Integration is not responding to incoming messages to pages - facebook

I have a Facebook messenger bot. This bot is connected to Dialogflow using a Gmail address. I have generated a token from the Facebook app. Then this token is inserted into the Dialogflow account. Also, webhook URL and verify_token from Dialogflow are given in the Facebook app.
Now I am facing a very odd problem. The problem is the bot is not responding to page messages or quick replies. So where is the problem? It is Facebook or Dialogflow? Please help me.
I have followed this documentation from Dialogflow. Dialogflow documentation Also, I have followed this tutorial from youtube.

I was able to replicate the video tutorial. I think you should be careful with these points.
On dialogflow, check if messenger integration is up and running and its pointing to your working enviroment. Defaults draft.
On facebook app, check if its valid and working. Your app must exists and the webhooks should be selected and token should have not changed.
If token was regenerated you might have to restart the syncronization process as described in the video you share.
Your bot should have basic intents. without intents, you will not get any response.
Your intents should be able to parse your incoming messages else you will not get any response.
On dialogflow, you can check if your intents are working properly by chatting with it. You should get details of the response generated.
Hint: You can chat with your dialogflow agent by writing messages on the Try it now to see if its working properly
Check if fulfillment is being use. If so, check if your inline editor or webhook are working properly and returning messages.
if there is a delay in the response and you are using code behind it you might need to know that response should not exceed the appropriate quotas per minute. For quota details you can see this link.

Related

Connect App Flutter with API instagrame Publish comment

I have a question about connecting my app, made with Flutter, with the Instagram API.
I want the user to register with their account, store the access token and then send a post to the API to publish a comment or add a like.
Can I do this with Flutter or do I need to use a different language like Python?
I checked the API documentation that Instagram provides and it seems that you can only do read-only requests (liking a post might not be possible).
The API you mentioned in your tags will not work with personal accounts, as Instagram states:
The API cannot access Instagram consumer accounts (i.e., non-Business or non-Creator Instagram accounts). If you are building an app for consumer users, use the Instagram Basic Display API instead.
You can try to use the mentioned Basic Display API instead, but mind you won't be able to author any posts or do actions in behalf of the user. To circumvent this, you might have to reverse-engineer the frontend facing portion of Instagram but I won't go into that.
To come back to your question, Flutter is well able to send network requests as mentioned here, but you still have a long way until you have functioning access to Instagram (check the Getting Started).

Facebook Chatbot delete messages by id

does anybody know if it is possible to delete messages by id.
For example I have an update for my content so that the user must not see any outdated messages. Didn't find anything in the graph API...
Message docs
thx
franzus
Facebook does not allow you to delete messages using the Messenger API, or the Graph API
I am not aware or, nor have found documentation for, a method that does DELETE operations (or UPDATE for that matter) on a FB Message.
The Messenger Docs provide methods for sending messsages, subscribing a page to your application's webhook, retrieving user profile information, and setting various options for your bot.

Find out whether Facebook page is live streaming

Is possible to find out whether some facebook page is live streaming right now? I was looking at Facebook API and from there it seems to me that it is not possible since /{page_id}/live_videos seems to be working only if you are an admin of the page (or you have been granted the access) since you cannot read live videos of public without page access token.
Yes, you can. This is actually called a WebHook (simultaneous notification of a certain app/user about changes made on the page). To do this you will have to create a Facebook App that will be subscribed to the changes made on a certain page that you want to track.
You can simply do this from the dashboard of the app or through Graph API 2.7(since this version supports live_videos) calling {app-id}/subscriptions and choose any of Page Object Subscriptions, which are available through Facebook API(in your case live_videos).
For this kind of subscriptions your app needs to be whitelisted in order not to spam or re-transmit the information received from a certain page.
To get more information about WebHook implementation please read Facebook API documenation: https://developers.facebook.com/docs/graph-api/webhooks
I know this is quite late already but for those that may stumble on it like I did, Yes it's possible.
As clearly stated in the documentation
Page Live Videos - Facebook API Documentation
You will need to make a GET Request to the endpoint below with the appropriate parameters:
https://graph.facebook.com/v6.0/{page-id}/live_videos
Where page_id is the Facebook Page ID you with to check for active Live Stream
The endpoint also expect broadcast_status whose value for your use case would be LIVE
Note: You will need and app setup on Facebook for developers platform and your query would have to be via the app
Further details can be found in the documentation whose link I provided at the initial part of this answer.
You might be able to get a returned string if there is any, from:
GET /v2.7/{page-id}/live_videos HTTP/1.1
Host: graph.facebook.com
You can read more in: https://developers.facebook.com/docs/graph-api/reference/page/live_videos/

How to test FB messenger bot with multiple users

Has anybody yet a way to interact with an FB messenger bot without using real FB accounts? I want to do automated testing and obviously not use real accounts for that.
I was not able to figure out how to allow access to a page to 'test users' or create a test page and subscribe the test app to it.
Any ideas on how to do this?
I use a wee web app I made to act as a local version of the facebook messenger api server and run user actions.
https://github.com/Fraser-Greenlee/bot_tester
On it you can write a script to define new users and their actions.
From the Facebook developers dashboard, select your app and then Roles. From Roles you can add other Facebook users as test users. It was easiest for me to use the users facebook id. Adding by email did not always work for me.
I am not aware of how to access a Facebook bot without a Facebook account. I created several fake accounts and had my friends test the bot. After testing, I deleted the fake accounts.
For more information on setting up a bot see my article Facebook Bots for Fun and Profit
The example bot is DMS Software Bot
The source code is Github fb-robot
Testing fb bot with non-fb user is currently not supported. Following are the reasons:
fb messenger requires the user to be logged
fb creates page scope ids (PSID) for each user who is interacting with the bot and hence login on fb is required
Coming to your question on testing:
you can add fb users as tester to your page and your app. Explained here. For your app https://developers.facebook.com/apps/[app-id]/roles/
Once added they will be able to send message to your bot (page) from messenger
On another note, if you are using 3rd party apps to build your bot (eg: api.ai, wit.ai) they already have emulators within the app which makes testing easier.
One easy way to achieve automated testing for messenger bots atleast is to try to mimic a request coming from FB. You can just log the request you are getting to your bot to find the signature of the request that FB sends. Then you can just pretend to be FB by sending http requests with the same signature. You will also have to add in code to respond to these http requests with your reply instead of just sending the message to FB's send API.
So in node it would be something like
sendMessage(<your reply>);
res.send(<your reply>);
Now you have an automated way of sending and receiving messages which you can use for automated testing.
However I think the bigger challenge is coming up with enough test cases. You need to use a combination of clustering over available data and classification to generate new cases.
I have been working on a tool to make this easy. So if you are interested you can sign up for early access. http://ozz.ai

Subscribe to youtube in Unity3D

I need the functionality of subscription to youtube in my game. I am working on Unity3D. How do I subscribe to youtube and also have a callback for success or failure of subscription.
You can do this using Google API with OAuth.
While there is no ready API for Unity3d there is one for .NET that might work. If not, you can always do the HTTP requests by yourself (note: this is quite advanced, use the provided library if possible).
The workflow:
First you need to create your application ID with Google (just once).
Then you need to authorize with oauth and request a permission from the user to subscribe.
Finally you can subscribe him or her with an API request.
See Google Developer Console for an live example.
As for knowing if the user has subscribed, you know immediately if the action has succeeded. You can also check his/her list of subscriptions at a later date with a simmilar API call.