cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Code Actions: Toolbelt

Code Actions: Toolbelt

We provide a collection of builtin functions for doing stuff like sending notifications, emails or pausing a bot.

Pausing a bot

You can temporarily disable all automatic interaction for a number of minutes. The duration is configured within the brain settings Minutes to auto pause.

async payload => {
  // Disable the bot for a number of minutes
  // Check the brain settings
  toolbelt.pauseBot()
}

Handover

Notify that the conversation needs to be taken over by a human. This will send a web push notification and place the interaction within the_take over required_list. Depending on the connected integration a conversation is moved into a different state.

async payload => {
  // Move the thread into a hand over state
  toolbelt.handover()
}

Resolve

Mark a conversation as resolved

async payload => {
  // Move the thread into a hand over state
  toolbelt.resolve()
}

Send an email

With this toolbelt function you can send an email notification. We support 2 types of email templates.

Takeover

This templates sends an email with the last 20 messages from the conversation to a specified recipient.

async payload => {
  // Send an e-mail to notify a conversation needs to be taken over
  toolbelt.email({
    to: 'name@company.com',
    template: 'takeover',
    hideButton: true //Optional
  })
}

Custom

This templates allows you to customise an email.

async payload => {
  // Send an e-mail to notify a conversation needs to be taken over
  toolbelt.email({
    to: 'name@company.com',
    cc: 'name@company.com', //Optional
    subject: 'Email subject',
    message: 'Email message'
  })
}

Delay

Sometimes you need more control of timing in an Action. For that we provide a simple method that works similar to the native setTimeout JavaScript function.

Max delay

The maximum delay is 10 seconds (10000)

async payload => {
  // Delay the code by 2 secs
  toolbelt.delay(() => {
    // Executes after the delay
    ...
  }, 2000)
}
async payload => {
  // Or delay inside a async function by 2 secs
  await toolbelt.delay(2000)

  // Executes after the delay
  ...
}

Unassigned interactions

With cloud code you can build complex handover scenarios. By using toolbelt.getUnassignedCount() you can request the number of unassigned interactions within the chat app.

async payload => {
  const count = await toolbelt.getUnassignedCount()
  if(count > 10) {
    return new Message('Sorry, its very busy at the moment..')
  }
  return new Message('Someone will be there shortly..')
}

Interaction URL

Within the takeover email you'll get a link to any conversation. You can also request this link using toolbelt.getInteractionUrl().

async payload => {
  const url = await toolbelt.getInteractionUrl()

  toolbelt.email({
    to: 'name@domain.com',
    subject: 'Check out the conversation',
    message: `This is the link ${url}`
  })
}

Tags

Tags are part of the user object within the payload. They can be set and removed using the flow designer, but it's possible to dynamically add and remove tags using code Actions.

async payload => {
  await toolbelt.addTags({
    tags: [
      { tagName: 'EXAMPLE_TAG_ONE', tagValue: 'value 1' },
      { tagName: 'EXAMPLE_TAG_TWO', tagValue: 'value 2' }
    ],
    payload
  })
}

Removing tags:

async payload => {
  await toolbelt.removeTags({
    tags: [
      'EXAMPLE_TAG_ONE',
      'EXAMPLE_TAG_TWO'
    ],
    payload
  })
}
 
Labels (1)

Code Actions: Toolbelt

We provide a collection of builtin functions for doing stuff like sending notifications, emails or pausing a bot.

Pausing a bot

You can temporarily disable all automatic interaction for a number of minutes. The duration is configured within the brain settings Minutes to auto pause.

async payload => {
  // Disable the bot for a number of minutes
  // Check the brain settings
  toolbelt.pauseBot()
}

Handover

Notify that the conversation needs to be taken over by a human. This will send a web push notification and place the interaction within the_take over required_list. Depending on the connected integration a conversation is moved into a different state.

async payload => {
  // Move the thread into a hand over state
  toolbelt.handover()
}

Resolve

Mark a conversation as resolved

async payload => {
  // Move the thread into a hand over state
  toolbelt.resolve()
}

Send an email

With this toolbelt function you can send an email notification. We support 2 types of email templates.

Takeover

This templates sends an email with the last 20 messages from the conversation to a specified recipient.

async payload => {
  // Send an e-mail to notify a conversation needs to be taken over
  toolbelt.email({
    to: 'name@company.com',
    template: 'takeover',
    hideButton: true //Optional
  })
}

Custom

This templates allows you to customise an email.

async payload => {
  // Send an e-mail to notify a conversation needs to be taken over
  toolbelt.email({
    to: 'name@company.com',
    cc: 'name@company.com', //Optional
    subject: 'Email subject',
    message: 'Email message'
  })
}

Delay

Sometimes you need more control of timing in an Action. For that we provide a simple method that works similar to the native setTimeout JavaScript function.

Max delay

The maximum delay is 10 seconds (10000)

async payload => {
  // Delay the code by 2 secs
  toolbelt.delay(() => {
    // Executes after the delay
    ...
  }, 2000)
}
async payload => {
  // Or delay inside a async function by 2 secs
  await toolbelt.delay(2000)

  // Executes after the delay
  ...
}

Unassigned interactions

With cloud code you can build complex handover scenarios. By using toolbelt.getUnassignedCount() you can request the number of unassigned interactions within the chat app.

async payload => {
  const count = await toolbelt.getUnassignedCount()
  if(count > 10) {
    return new Message('Sorry, its very busy at the moment..')
  }
  return new Message('Someone will be there shortly..')
}

Interaction URL

Within the takeover email you'll get a link to any conversation. You can also request this link using toolbelt.getInteractionUrl().

async payload => {
  const url = await toolbelt.getInteractionUrl()

  toolbelt.email({
    to: 'name@domain.com',
    subject: 'Check out the conversation',
    message: `This is the link ${url}`
  })
}

Tags

Tags are part of the user object within the payload. They can be set and removed using the flow designer, but it's possible to dynamically add and remove tags using code Actions.

async payload => {
  await toolbelt.addTags({
    tags: [
      { tagName: 'EXAMPLE_TAG_ONE', tagValue: 'value 1' },
      { tagName: 'EXAMPLE_TAG_TWO', tagValue: 'value 2' }
    ],
    payload
  })
}

Removing tags:

async payload => {
  await toolbelt.removeTags({
    tags: [
      'EXAMPLE_TAG_ONE',
      'EXAMPLE_TAG_TWO'
    ],
    payload
  })
}
 
Labels (1)
Last Reviewed:
03-03-2022 02:33 AM

Code Actions: Toolbelt

We provide a collection of builtin functions for doing stuff like sending notifications, emails or pausing a bot.

Pausing a bot

You can temporarily disable all automatic interaction for a number of minutes. The duration is configured within the brain settings Minutes to auto pause.

async payload => {
  // Disable the bot for a number of minutes
  // Check the brain settings
  toolbelt.pauseBot()
}

Handover

Notify that the conversation needs to be taken over by a human. This will send a web push notification and place the interaction within the_take over required_list. Depending on the connected integration a conversation is moved into a different state.

async payload => {
  // Move the thread into a hand over state
  toolbelt.handover()
}

Resolve

Mark a conversation as resolved

async payload => {
  // Move the thread into a hand over state
  toolbelt.resolve()
}

Send an email

With this toolbelt function you can send an email notification. We support 2 types of email templates.

Takeover

This templates sends an email with the last 20 messages from the conversation to a specified recipient.

async payload => {
  // Send an e-mail to notify a conversation needs to be taken over
  toolbelt.email({
    to: 'name@company.com',
    template: 'takeover',
    hideButton: true //Optional
  })
}

Custom

This templates allows you to customise an email.

async payload => {
  // Send an e-mail to notify a conversation needs to be taken over
  toolbelt.email({
    to: 'name@company.com',
    cc: 'name@company.com', //Optional
    subject: 'Email subject',
    message: 'Email message'
  })
}

Delay

Sometimes you need more control of timing in an Action. For that we provide a simple method that works similar to the native setTimeout JavaScript function.

Max delay

The maximum delay is 10 seconds (10000)

async payload => {
  // Delay the code by 2 secs
  toolbelt.delay(() => {
    // Executes after the delay
    ...
  }, 2000)
}
async payload => {
  // Or delay inside a async function by 2 secs
  await toolbelt.delay(2000)

  // Executes after the delay
  ...
}

Unassigned interactions

With cloud code you can build complex handover scenarios. By using toolbelt.getUnassignedCount() you can request the number of unassigned interactions within the chat app.

async payload => {
  const count = await toolbelt.getUnassignedCount()
  if(count > 10) {
    return new Message('Sorry, its very busy at the moment..')
  }
  return new Message('Someone will be there shortly..')
}

Interaction URL

Within the takeover email you'll get a link to any conversation. You can also request this link using toolbelt.getInteractionUrl().

async payload => {
  const url = await toolbelt.getInteractionUrl()

  toolbelt.email({
    to: 'name@domain.com',
    subject: 'Check out the conversation',
    message: `This is the link ${url}`
  })
}

Tags

Tags are part of the user object within the payload. They can be set and removed using the flow designer, but it's possible to dynamically add and remove tags using code Actions.

async payload => {
  await toolbelt.addTags({
    tags: [
      { tagName: 'EXAMPLE_TAG_ONE', tagValue: 'value 1' },
      { tagName: 'EXAMPLE_TAG_TWO', tagValue: 'value 2' }
    ],
    payload
  })
}

Removing tags:

async payload => {
  await toolbelt.removeTags({
    tags: [
      'EXAMPLE_TAG_ONE',
      'EXAMPLE_TAG_TWO'
    ],
    payload
  })
}
 
Labels (1)
Version history
Last update:
‎06-17-2021 05:22 AM
Updated by:
Contributors