Inspiration

As a developer circle member (and lead) figuring out how to maintain and grow meaningful engagement is my call of duty :) I get to interact with many members, learning what informs the level of engagement they maintain on the group. As a developer community, one common determinant is how people perceive the community's disposition to help when they share a bug or challenge they are working on. When this help takes forever (or doesn't come) the fellow's spirit is dampened and for new members, this could result in losing them entirely especially if there are other engagements going on.

While this feeling is very understandable, the cause also is. Most times, people that get to view this post either don't have the requisite expertise to help or forget to common around to it. And for fairly large/active communities posts with lesser engagement get buried amongst others. Hence those who actually care don't get to see these call for help. More so, when folks go the extra mile of sending a direct message to those they feel can help; they receive an almost instant response.

We had earlier tried to solve for this by polling member for their skillsets and interest. And with this, we actively tagged members on posts we deem matching to the indicated skillset and interest. This worked amazingly, increasing sparks of engagement in posts that hitherto would be en route to oblivion.

Yea, the manual nature of this is clearly limiting, not just with keeping up with the posts but also keeping up with members changing skill sets and interests.

Hence enters automation :)

What it does

  • Keep track of community members (indicated) skill sets and interests
  • Prompt members with posts matching these skillsets and/or interests

How I built it

  • Setup a bot on messenger that users can interact with
  • Setup a botend on heroku for features that wouldn't be delightful having on messenger such as category fine-tune
  • Setup schedule background jobs to poll FB graph for feeds on behalf of subscribed communities and leverage wit.ai to understand the feed category
  • Create an app on wit.ai to analyse and decipher categories in a given wall of text.

Challenges I ran into

  • Facebook OAuth can be friendlier
  • The revamp of group permissions fails to finely differentiate between read and write permission.
  • Some Facebook pages (or state of pages) are not eligible for @username hence can't have cool m.me/links
  • There's some weird behavior with the Facebook JS sdk while trying to display send to messenger button
  • Heroku wouldn't allow more than one free worker dyno
  • Heroku scheduler isn't granular

Accomplishments that I'm proud of

  • Robust test suite
  • Cool token expiration management system
  • Integration with wit.ai
  • Flexible and manageable architecture
  • Super reliable database relationship

What I learned

  • Writing end-to-end test for a bot implementation
  • Better architecture for a messenger bot project
  • More on new policies facebook has in place for working with its platform
  • Using background jobs to manage token expiration
  • Some more about how to use the Facebook graph api
  • Couple of edge cases to consider in linking psid and asid
  • Understood more about the messenger platform; how to handle referrals, managing webviews using messenger extensions
  • Messenger QR code generator API doesn't like refs with spaces
  • Limitations while communicating with wit.ai API

What's next for Prompter

  • Reenable the feedback mechanism for the bot
  • Keep improving the feed analysis ai model on wit.ai
  • Build out more community types
  • Allow for custom community feed categories
  • Allow for custom community types
  • Allow community admins to setup custom feed categories for their community type
  • Deliver more flexibility to community admins to customize the frequency of feed checks
Share this project:
×

Updates