Engineering

Bot interface and pong bot implementation

Rommel Sunga
Rommel Sunga Solutions Engineer
Share

Get Started!

Sign up for a full-featured 30 day free trial. No credit card required.

Free Trial

Sendbird’s bot interface

Connect any bot to Sendbird so it can interact autonomously with users.

Connect a bot to Sendbird with the bot interface

Sendbird’s bot interface allows you to connect a bot to any 1-on-1 message or group channel so it can interact with users.

While Sendbird’s bot interface does not provide the AI, it accomplishes two necessary steps for implementing a chatbot:

  1. Connects a bot to Sendbird with a callback URL, so the bot can monitor user messages and events in real-time
  2. Enables the bot to join channels and send messages to users

Which apps should use Sendbird’s bot interface?

Bots can accomplish many simple or routine tasks at a large scale, provide answers to user questions quickly, and sell products or make suggestions based on a user’s information. By some measures, bots can resolve 40-80% of routine inquiries. So apps that manage high volumes of routine questions or tasks can use a chatbot to help users as quickly as possible. By freeing up customer agents for more complex tasks and reducing time-to-resolution for inquiries, your users feel helped and satisfied.

Use-cases for the chatbot interface

Since the purpose of existing chatbots varies so widely, it’s challenging to pin down specific use-cases by application type. The following, however, are a sample of successful use-cases:

  • A chatbot that assists users during onboarding
  • Use a chatbot to ask pre-screening questions or walk users through intake forms
  • A concierge that makes smart suggestions or offers troubleshooting advice
  • Sell simple products with a chatbot, or cross- and up-sell
  • A virtual assistant for financial services
  • A helper bot that answers routine questions

Implementing the chatbot interface

The rest of this guide instructs you how to implement a simple chat bot using Sendbird’s Platform API. This bot will respond with “pong” any time a user in it’s channel sends “ping.” Ultimately, this guide will familiarize you with Sendbird’s bot interface and prepare you to deploy various bots on your Sendbird application.

To implement a chatbot on AWS Elastic Beanstalk and a corresponding bot on SendBird, this guide will walk you through the following steps:

  • Create a basic pong bot
  • Deploy the bot on Elastic Beanstalk
  • Set up a Sendbird bot
  • Create a Sendbird user
  • Create a Sendbird channel
  • Create a Sendbird bot
  • Add the bot to the channel
  • Send a test message to the channel so the channel is visible
  • Send messages to the channel to trigger a response from the bot

Create a basic pong bot

For this tutorial, Sendbird provides sample server code written in Python 3.6 that uses Flask. It can be deployed to AWS Elastic Beanstalk as a starting point for your own chatbot.

Read an explanation of the code in the README.md of this repository.
https://github.com/smilefam/simple_pong_chatbot

Note: Change the host bot_id and api_token values in the config.py according to your own Application and Bot values.

Deploy the bot on Elastic Beanstalk

To get a chatbot running on a publicly accessible endpoint, this tutorial uses AWS Elastic Beanstalk so you don’t have to worry about the underlying infrastructure. AWS will handle the infrastructure and give us a web server to run our sample code.

Note: If you have a preferred cloud provider, feel free to use it. AWS Elastic Beanstalk is a suggestion for those without prior infrastructure knowledge.

AWS Flask/Python Reference
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html

AWS Reference Documentation
https://aws.amazon.com/getting-started/tutorials/deploy-app-command-line-elastic-beanstalk/

Setup the Elastic Beanstalk CLI

For the commands in this tutorial, setup the Elastic Beanstalk CLI. Follow the AWS documentation for this because it applies generally:
https://aws.amazon.com/getting-started/tutorials/set-up-command-line-elastic-beanstalk/

Setup an Elastic Beanstalk Application Directory

Enter eb init and follow the setup wizard. For this tutorial, accept the default options.

If you have never set up an AWS service using their CLI before, you may be prompted to authenticate your AWS account. Retrieve your credentials through the IAM section of the AWS Console.

Launch Bot on Elastic Beanstalk

Enter eb create to launch an Elastic Beanstalk instance. For this tutorial, accept the default options suggested by the AWS CLI.

Once you have deployed your bot, you can take a look at Elastic Beanstalk on the AWS Console.

Note the URL of the bot. It will become part of the bot_callback_url in the next section.

Set up a Sendbird bot

After setting up AWS Elastic Beanstalk, set up a corresponding bot on Sendbird using the Bot Interface. The Sendbird Bot will send commands to your chatbot on Elastic Beanstalk.

To create a Sendbird bot, use the Bot Interface – Create Bot Endpoint.

Add the /bot endpoint to bot_callback_url since our server code listens for messages at this endpoint.

POST https://api-{application_id}.sendbird.com/v3/bots

cURL

Response

Create a Sendbird user

Create a Sendbird user using the Create User Endpoint. You can use any value for the user_id but note it for later steps in the tutorial.

POST https://api-{application_id}.sendbird.com/v3/users

cURL

Response

Create a Sendbird channel

Create a Sendbird channel using the Create Channel Endpoint. In this example, add the user test_user_1 to the channel (or the value of user_id created above). We’ll add the bot user to the channel in the next step, so do not add it for now.

Save the automatically generated channel_url in the following response for later steps.

POST https://api-{application_id}.sendbird.com/v3/group_channels

cURL

Response

Add the bot to the channel

Next, add the Sendbird bot to the channel so it can receive messages and respond to them. This can be done using the Bot Interface – Join Channel Endpoint.

POST https://api-{application_id}.sendbird.com/v3/bots/{bot_user_id}/channels

cURL

Response

Send a test message to the channel so the channel is visible

The sample apps in the next section do not display channels without messages. Use the following Platform API call to send a test message to the channel so that it is visible in the channel list of the sample app.

POST https://api-{application_id}.sendbird.com/v3/{channel_type}/{channel_url}/messages

cURL

Response

Send messages to the channel to trigger a response from the bot

Now, your bot is ready to respond to a message.

If you don’t already have a Sendbird app running, use one of our sample apps and follow the instructions to replace the default APP_ID with your application’s APP_ID.

JavaScript Web Basic Sample:
https://github.com/sendbird/Sendbird-JavaScript/tree/master/web-basic-sample

Android Sample:
https://github.com/sendbird/Sendbird-Android/tree/master/basic

iOS Sample:
https://github.com/sendbird/Sendbird-iOS

Afterward, log in with the Sendbird user ID you created (not the bot) so you can interact with the bot.

The following image displays the login for test_user_1 in the JavaScript Web Basic Sample. We created test_user_1 in a previous section.

After logging in, send the message “ping” to a channel. The bot responds with a “pong” after receiving the message event from Sendbird’s server.

The below image shows our first test message, “ping,” and then our exchange with the “pong” bot.

Redeploy changes to AWS Elastic Beanstalk

After deploying your bot, you may want to make changes to it like changing the response or changing the messages it will respond to. There are two options for redeploying.

eb CLI deploys the latest committed changes. If you do not make a commit, it will not use the latest changes.

git add * adds all new changes with committing.

Deploy them using eb deploy --staged

Next Steps: cloud chatbot providers and upgrading infrastructure

For heavier traffic and more complex uses, we recommend using an infrastructure other than Elastic Beanstalk, like AWS EC2 or ECS, for better scalability and cost optimization of your chatbot.

This tutorial covers the implementation of a simple chatbot. But you’re now ready to implement more complex logic for your chatbot or integrate with cloud chatbot providers. They include Google’s DialogFLow and IBM Watson’s Chatbot. No matter which bot you choose, Sendbird’s bot interface can help you easily link it to chat and messaging on your app.

Tags: Engineering