Create a deployment bot

There’s enough to think about when deploying your application. Why not make the process simple and transparent by deploying through Typetalk?

With this tutorial, we’ll show you how to create a bot you can tell to deploy your application, simultaneously informing your entire team of the update.

How to create a deployment bot for Typetalk

For this tutorial, we will use the following services:

And we will use the below architecture: 

  1. Set your Lambda function

    First, create the following two functions on AWS Lambda.

    Function #1

    This function will accept the request from the API Gateway, parse the response body, and then create the deployment on CodeDeploy.

    var AWS = require('aws-sdk');
    var codedeploy = new AWS.CodeDeploy({ region: process.env.YOUR_CODEDEPLOY_REGION });

    exports.handler = function(event, context, callback) {
     var params = {
       applicationName: process.env.YOUR_CODEDEPLOY_APPLICATION_NAME,
       deploymentGroupName: process.env.YOUR_CODEDEPLOY_DEPLOYMENT_GROUP_NAME,
       revision: {
         revisionType: "S3",
         s3Location: {
           bucket: process.env.YOUR_BUCKET,
           bundleType: process.env.YOUR_BUNDLE_TYPE,
           eTag: process.env.YOUR_BUCKET_ETAG,
           key: process.env.YOUR_BUCKET_KEY,
           version: process.env.YOUR_BUCKET_VERSION

     codedeploy.createDeployment(params, function(err, data) {
       if (err) console.log(err, err.stack); // an error occurred
       else console.log(data); // successful response

     var body = JSON.parse(event.body);
      var id =;

     var responseBody = {
       "message": "Deployment has been started...",
       "replyTo": id

     var response = {
       "statusCode": 200,
       "headers": {},
       "body": JSON.stringify(responseBody),
       "isBase64Encoded": false

     callback(null, response);

    Function #2

    This function will post a message to Typetalk.
    var exec = require('child_process').exec;

    exports.handler = (event, context, callback) => {
      var url = "'" + process.env.YOUR_TOPIC_ID + "?typetalkToken=" + process.env.YOUR_TYPETALK_TOKEN + "'";
      var cmd = "curl --data-urlencode 'message=Deployment has been finished!' " + url;
      exec(cmd, function(err, stdout, stderr){

      callback(null, 'Message has been posted');
  2. Set your API Gateway

    Next, create an API Gateway to accept the Webhook from Typetalk.

    You will need to create a POST method for our API and connect it to the Lambda function #1.

    After deploying it, check and note the “Invoke URL”. You will use it for the Webhook request.

  3. Set your SNS Topic

    Next, create an SNS Topic to connect to your CodeDeploy application and the Lambda function #2.

    After creating the SNS Topic, connect it to your CodeDeploy application.

  4. Create your Typetalk bot

    Next, create your bot on Typetalk. The deploy bot will post messages and send Webhook requests, so you’ll need to check “API Scope >” and “Webhook > Use Webhook”.

    Also, you need to specify the URL the bot will send Webhooks to. The URL should be the API Gateway endpoint you created in step 2.

  5. Deploy your application

    Finally, you’re ready to deploy! Ask your bot to deploy your application by posting a mention to the bot. The bot will reply when complete.

    After receiving the message from your bot, deployment will begin.

    And it will post a message again when deployment has succeeded.

    All members of the assigned Typetalk topic can see the status of deployment, keeping your whole team informed.

    Rather than using your console while having to tell your team that you’re deploying, combine these steps into one simple Typetalk message to your bot. Deploying has never been easier!

1 people think that it is helpful. Was this helpful for you?

Have a question we didn't answer?

Contact support