Cloudkibo / OldKiboEngage

MIT License
0 stars 0 forks source link

KiboEngage Push #711

Open jekram opened 7 years ago

jekram commented 7 years ago

image

jekram commented 7 years ago

@zarmeen92 Can we not use ChatBOT to drive this? As it already has push function to Messenger?

This App may be a stand alone to push messages and does not need to tightly integrate with KiboEngage.

zarmeen92 commented 7 years ago

Yes sir this is possible. I found this product https://octaneai.com/ This allows to train bot to send forms, subscriptions, compaigns to Facebook customer base

zarmeen92 commented 7 years ago

Following is the summary of Policies of Facebook on Subscription based messaging https://developers.facebook.com/docs/messenger-platform/policy-overview

Person opts into receive subscription messaging within Messenger, as well as the frequency and type of content they will receive. Messaging is triggered by Person sends a message to a business or clicks on a call to action button within Messenger to request subscription messaging

Message restrictions No advertising, solicitations, marketing, or promotional content.

Eligible use cases Eligible use cases include: News: Bots whose primary purpose is to inform people about recent or important events or information in categories such as sports, finance, business, real estate, weather, traffic, politics, and entertainment. Productivity: Bots whose primary purpose is to enable people to manage their personal productivity with tasks such as managing calendar events, receiving reminders, and paying bills. Personal trackers: Bots that enable people to receive and monitor information about themselves in categories such as fitness, health, wellness, and finance.

zarmeen92 commented 7 years ago

Task update: I played with OctaneAI. It has a very simple yet powerful UI and bot features. The login requires Facebook Authentication. After authentication, it requires Facebook Page link to which the Bot will be integrated. I created a sample page on Facebook OctaneProducts https://web.facebook.com/octaneproducts/

With the bot, we can send Polls, Notifications, Forms to the Page followers. The also allow customer segmentation based on Gender. This will send the promotional content/ notification to followers who meet segmentation condition

jekram commented 7 years ago

Thanks. Give me a demo

jekram commented 7 years ago

@zarmeen92 what is the update on this task from Friday?

zarmeen92 commented 7 years ago

Here is the document I have created on Octane AI features https://docs.google.com/document/d/1qUajXZ5h1ZtQlcl4IvJ8aa1_yZqVswJnAAsimmr_hmo/edit#

Documentation -> Discussion -> Octane AI

I read their guidebook and articles on Medium https://learn.octaneai.com/

jekram commented 7 years ago

@zarmeen Thanks. I will review this on Thursday Meeting

zarmeen92 commented 7 years ago

we can close this task, if no further investigation is required @jekram

jekram commented 7 years ago

@zarmeen92 The intent was to investigate and design. The investigation is done the design is pending.

I am going to mark this on hold for now.

zarmeen92 commented 7 years ago

I have started working on the design document https://docs.google.com/document/d/1QutP7ishi8RDIX1i7_ALdUXqrx88X4lZuCdH_X-Qwl8/edit

It is under construction

jekram commented 7 years ago

@dayemsiddiqui @sojharo Please actively participate and provide coommnets

sojharo commented 7 years ago

Ok Sir.

sojharo commented 7 years ago

If there is any limit enforced by facebook as to how many broadcasts a page can send in a day then we would have to put the same limit on the companies on our kiboengage side.

I think we should check this from facebook documentations.

zarmeen92 commented 7 years ago

i have updated the document. The document is still not complete yet. From the implementation perspective, we need to look into Facebook APIs documentation in order to understand what facebook actually allows in terms of extracting pages and customers info.

dayemsiddiqui commented 7 years ago

@jekram @zarmeen92 @sojharo One of the challenges we were facing was how to send a message to users in bulk. I found this stackoverflow question regarding this problem: https://stackoverflow.com/questions/42647266/facebook-messenger-send-api-send-to-a-big-amount-of-users

Read the comments below the questions. In the question, the user asks that he has two options either he can batch 50 messages per call or he can send message individually to all subscribers iteratively. So there is an option of batching although I am still unable to figure out the exact documentation on batching while sending a message using the Messenger API.

He also asks whether facebook will block his requests if he chooses to send messages iteratively to each user. To this question the people in the comments have replied as follows:

"First of all, in regard to API rate limits it doesn’t make a difference if you batch your requests or not. Secondly, I don’t think there’s any rate limits that apply at this point - if you have a legitimate use case to send messages to users, then that’s that, why would Facebook limit that in any way? // Batching the requests is nevertheless a good idea, because it reduces the number of HTTP requests you have to make when communicating with the API"

Also I think facebook has very generous Limits to Send API. I think they only block a user in case of extensive spamming, if we have a legitimate use case, I dont think we would have any problem: Following is from the official facebook docs: "Limits

Calls to the Send API

Messenger Platform supports a high rate of calls to the Send API.

However, you should architect your system such that you distribute any sudden high amounts of load over time and are able to control your throughput should you hit our rate limits.

Rate limits are in place to prevent malicious behavior and poor user experiences.

Be sure to catch any errors returned by the Send API including the one indicating that you've reached the rate limit."

https://developers.facebook.com/docs/messenger-platform/send-api-reference

dayemsiddiqui commented 7 years ago

I am working on KiboPush from following three perspectives:

My suggestions up till now:

dayemsiddiqui commented 7 years ago

Also you may want to check out these products:

sojharo commented 7 years ago

After having discussed with @dayemsiddiqui , I started exploring the facebook SDK to know if they provide any endpoints for sending push notifications or broadcast messages. However, I also couldn't find such SDK from facebook. The approach to send the messages iteratively from our side, I also found this on forums. The main thing in this I think it is to do it recursively and not iteratively. Because in such way, we would be in better position to handle recursive calls. Also we would be able to know if our rate limit is reached then we would halt the process of sending push messages.

Further, I have been thinking that our API.AI bot should be integrated with that in order to help user fill the form or give survey response. This would keep sessions with people so that it would know who is sending what response for what questionaire. I would discuss the design with dayem more today.

jekram commented 7 years ago

Thanks @dayemsiddiqui https://www.botletter.com/ https://manychat.com/ https://www.flashchat.ai/

@sojharo @dayemsiddiqui Please factor into capabilities of these in KibpPush

sojharo commented 7 years ago

Yes Sir.

dayemsiddiqui commented 7 years ago

The method of sending push notifications to users is described as follows on stackoverflow: https://stackoverflow.com/questions/37922087/facebook-messenger-bot-daily-push-notification-how

" up vote4down vote | The idea is simple. When you send "subscribe" to the bot, the bot server would add a record according to the sender_id to their database or memory , then the bot server could set a timer to distribute the news messages to those sender_id who have subscribed for the news. "

sojharo commented 7 years ago

@dayemsiddiqui as per our discussion, let me add more to this document. I would add more points in the document and then we would discuss it. we are getting more ideas while discussing it with each other.

dayemsiddiqui commented 7 years ago

@sojharo acknowledged.

jekram commented 7 years ago

This is still incomplete. When Can I see the full design document?

I would like to review this at 1 PM Tuesday.

jekram commented 7 years ago

If we are going to use a bot then we need to have just one bot server for all coustomer. If we need bot server per costomer then it will be an issue. Let's discuss the options?

sojharo commented 7 years ago

There are few questions that we need to discuss as they are impacting design and creating confusions on how should we design document. We just had to remove some content from document that we added yesterday as we couldn't agree on it. From the previous points in the documentation, there are some ambiguities:

  1. Will we create Kibo Push as a separate project with its own dashboard and API? It will then connect to KiboEngage or Chatbot that we already have created.

  2. Currently, when kiboengage fb chat happens, we get the facebook user information and we store it in the database. I am assuming that just like we send email notifications to customers coming from web widget and message notification to customers coming from mobile widget, here also we are trying to send the push notifications to the customers coming from facebook page. If this is the intent, then this can be done in the same kiboengage project.

  3. If we want to make kibo push a separate project, then we would have to have separate mongodb database for kibo push. We would be storing facebook users information on two places. On KiboEngage and Kibo push. So we need to decide this as it is also impacting the design.

  4. As discussed with zarmeen before she left, we are assuming that we need to create the push feature first. And she said we would do survey, forms and conversations later as they require bot. Do we also need to tackle all the features at once in design document. We had been thinking on how we would do push up till now.

  5. For the features which require bot, and that is slightly different bot than what we are building in chat bot (similar to api.ai). so there is one more confusion do we want to integrate this new feature with kiboengage or with our chat bot project. Dayem and I had discussed and designed by thinking that we are going to integrate it with kiboengage as kiboengage already has facebook customer database. However, it is lacking the bot capabilities and we would have to add these there and provide UI to define conversation flow and survey questionnaires.

  6. So if we make it similar to octane.ai then it has two use cases.. 1. Customer engagement 2. Bot which asks surveys. Here we need to decide where this work should be inclined as we have two separate projects for these two use cases. For customer engagement, we have kiboengage, for surveys and conversations we have new project chat bot.

jekram commented 7 years ago

What is the update here? I see no change

sojharo commented 7 years ago

Yesterday, we worked and discussed on this till our meeting at 1:00. After this I had to work with sumaira for certificate issues and then I worked on one other task from kiboengage. I will complete this today.

sojharo commented 7 years ago

Dayem and I designed the ERD structure and thought of the flows. We have put them all in the design document now. Please refer to it and let us know if we need to cater anything more. Tasks are also defined. Dayem has also opened them on Github and pushed the skeleton code of the project created using MERN.

@dayemsiddiqui I have added some more tasks on both client side and server side in database. We also need to open these tasks.

sojharo commented 7 years ago

https://docs.google.com/document/d/1QutP7ishi8RDIX1i7_ALdUXqrx88X4lZuCdH_X-Qwl8/edit#

jekram commented 7 years ago

Thanks.

jekram commented 7 years ago

@zarmeen92 Please review

jekram commented 7 years ago

Great job - please see my comment about Data Base in the document.

Please go ahead and open all the task and let's target Mid Aug for V1.

jekram commented 7 years ago

are we using ReactJs?

sojharo commented 7 years ago

Yes, I have seen the comment. Issues are opened on its repository. We can assign priorities and version numbers:

https://github.com/Cloudkibo/KiboPush/issues

For database, I have opened the task there to integrate with mysql and setup mysql on the droplet. Let's also create a droplet so that I set it up today. I would do all the database related work in separate module.

Yes, currently we have scaffold MERN application which uses Reactjs. Dayem was suggesting to go with simple expressjs application and use vue.js. He said it would help him in UI design and themes. However, I have suggested that I would help in understanding MERN. The latest version of MERN is little bit complex.

jekram commented 7 years ago

you folks can decide on this: "Yes, currently we have scaffold MERN application which uses Reactjs. Dayem was suggesting to go with simple expressjs application and use vue.js. He said it would help him in UI design and themes. However, I have suggested that I would help in understanding MERN. The latest version of MERN is little bit complex."

jekram commented 7 years ago

I am fine with either approach.

jekram commented 7 years ago

Is vue.js React Js? I would like to stay with React Js?

jekram commented 7 years ago

Please move the document to KiboPush and mark this resolved.

dayemsiddiqui commented 7 years ago

Moved here is the link : https://github.com/Cloudkibo/KiboPush/issues/81

We can close this issue now.