InterBot Videos

Brand Bot

Watch this demo to see how InteBot helps enterprises leverage the "micro bot architecture"

NLP Bot

Interbot enables developers to create smart bots by using component bots.

Game Bot

Bots can employ various gaming strategies & play different multi-player games using InterBot

Why InterBot Communication

  • Can easily compose new bots by simply connecting them
  • Bots can collaborate with each other to enable new services
  • Bots can delegate or outsource tasks to different bots
  • Bots can transact and negotiate with other bots at bot-speed
  • Bots can upgrade themselves by leveraging capabilities of other bots
  • Because it's powerful and enables new ideas we haven't thought of
Why Bot to Bot Communication

How does it work

Gupshup

Consume

Gupshup

Publish

Gupshup

Compose

Applications of Bot to Bot Communication

Gupshup

Simple, easy, yet powerful bot
building tools for everyone

Gupshup

Efficient shopping with marketplaces
and trading exchanges

Gupshup

Bots can testing, monitor, fix, track
and manage other bots

Gupshup

Bot library of utility bots
that provide common features

Gupshup

Customer-facing brand bot that
routes requests to internal bots

Gupshup

Bot hierarchies and organizations
to handle complex workflows

Applications of Bots to Bot communication

Application Layer

These applications can be achieved using the Bots to Bot communication channel

Bot to Botvs APIs

Bot to Bot
  • Connect bots without coding skills
  • Bots are generally flexible and fault tolerant
  • Bots are asynchronous, enable more possibilities
  • Bots can do bi-directional messaging
  • Bots can talk to bots and humans alike
APIs
  • Integrating APIs requires coding skills
  • APIs are fragile; they break with input errors
  • APIs are synchronous; they don't like delays
  • APIs are uni-directional
  • APIs are meant for computers alone

Still curious?

Learn More Get Started
function MessageHandler(context, event) { } function EventHandler(context, event) { } function HttpResponseHandler(context, event) { } function DbGetHandler(context, event) { } function DbPutHandler(context, event) { }
function MessageHandler(context, event) { var channelName = event.contextobj.channeltype; var senderName = event.senderobj.channelid; context.console.log("refid : "+refid+" ; senderName : "+senderName); var ibcbots = botmap.split("|"); var position = ibcbots.indexOf("@"+senderName); var nextBot = ibcbots[position+1] var lastBot = ibcbots[ibcbots.length-1].replace(/@/g,""); context.console.log("nextBot : "+nextBot); if(channelName == "ibc"){ var refid = event.contextobj.refid; if(position < 0 && senderName!=botName){ //IBC Init Point if(!context.simpledb.botleveldata[refid]){ context.simpledb.botleveldata[refid]=senderName; context.simpledb.saveData(sendIBCMessage(context,ibcbots[0].replace(/@/g,""),refid,event.message)); }else{ delete(context.simpledb.botleveldata[refid]) return; } }else if(nextBot){ sendIBCMessage(context,nextBot.replace(/@/g,""),refid,event.message); }else{ recBotname = context.simpledb.botleveldata[refid]; try{ var userContext = JSON.parse(recBotname); delete context.simpledb.botleveldata[refid]; context.simpledb.saveData(sendMsg(context,recBotname,event.message)); }catch(err){ delete context.simpledb.botleveldata[refid]; context.simpledb.saveData(sendIBCMessage(context,recBotname,refid,event.message)); } } }else{ var _event = event; var _context = context; generateRefid(function(context,event){ var refid = String(event.getresp); sendMsg(context,JSON.stringify(_event.contextobj),"Replying..."); context.simpledb.botleveldata[refid] = JSON.stringify(_event.contextobj); context.simpledb.saveData(sendIBCMessage(context,ibcbots[0].replace(/@/g,""),refid,_event.message)); }); } } function generateRefid(cb){ var url = envurl+botName+'/refid'; var headers = { 'content-type': 'application/x-www-form-urlencoded', 'apikey': apikey } context.simplehttp.makePost(url, "", headers,cb); } function sendIBCMessage(context,recipientName,refid,message) { var url = envurl+botName+'/sendmsg'; var headers = { 'content-type': 'application/x-www-form-urlencoded', 'apikey': apikey } var formData = 'refid=' + refid + '&message=' + message+'&destbotname='+recipientName; context.simplehttp.makePost(url, formData, headers); } function sendMsg(context,userContext,message){ var url = botenvurl+botName+'/msg'; var headers = { 'content-type': 'application/x-www-form-urlencoded', 'apikey': apikey } var formData = 'context=' + userContext + '&message=' + message+"&bypass=true"; context.simplehttp.makePost(url, formData, headers); } /** Functions declared below are required **/ function EventHandler(context, event) {} function HttpResponseHandler(context, event) {} function DbGetHandler(context, event) {} function DbPutHandler(context, event) {}