Skip to content

KAZOO Support Channels

This documentation is curated by 2600Hz as part of the KAZOO open source project. Join our community forums here for peer support. Only features in the docs.2600hz.com/supported space are included as part of our 2600Hz Support Services plan.

Pivot#

About Myself#

  1. About Myself

    • James Aimonetti
      • Eye-Moe-Net-Tea
      • Commit to memory Patrick!
    • Kazoo Architect and Community at 2600Hz
    • mc_ on freenode
  2. Presenter

    img

High-level#

  • Point a callflow at your server
  • Process the call against your business logic
  • Return Kazoo callflow JSON

Flow#

img

Setting up Kazoo#

  • create a callflow
  • set the pivot action as the child
  • set the URL to your web server and script
curl -X PUT \
-H "x-auth-token: {AUTH_TOKEN}" \
-H "content-type: application/json" \
-d '{"data":{
  "numbers":["12345"]
  ,"flow":{
    "module":"pivot"
    ,"data":{
      "voice_url":"http://your.server/pivot.php"
    }
  }
 }
}' \
http://crossbar:8000/v2/accounts/{ACCOUNT_ID}/callflows

Pivot will attempt to reach your server for calls to that callflow.

The Request#

  • GET - query string parameters
  • POST - x-www-form-urlencoded request body

Common Request Fields#

Name Description
Call-ID SIP Call-ID field
Request SIP Request user
To SIP To user
From SIP From user
Account-ID Kazoo Account ID
Caller-ID-Name CID Name
Caller-ID-Number CID Number

Other Request Fields#

Name Description
Digits DTMFs (or collections) received
User-ID Owner ID(s) of the calling device
Language Configured by the device/user/account

Create a handler#

  • Create the script that Pivot will call
  • Process and build the Kazoo callflow JSON
  • Set Content-Type to application/json
  • Return the JSON as the body of the HTTP response

Let's Build something!#

Example Time!

Say something#

Say Hi to the caller#

Play an MP3 to the caller#

Bridging the caller to a user#

Bridge to:

Bridging the caller to a carrier#

  • Toggle between local and global resources
  • Statically define a number to dial out to
  • See the schema for all the data options

Collecting DTMF#

First, collect the DTMF

Collecting DTMF#

A followup HTTP request will be sent to http://pivot.your.company.com/collected.php

  • Request includes Digits[custom_name]=1234
  • DTMF can either come as a basic string (if no custom name is used) or an array.
  • Let's see how to process them.

Collecting DTMF#

Sending Presence Updates#

Send custom presence updates

  • Some IoT devices/appliances can process SIP NOTIFY
  • presence_id can be name or name@realm
  • status can be idle, ringing, or busy

Callflow actions#

  1. Bridging

    • Device
    • User
    • Group
    • Resource
    • Conference
    • Voicemail Box
    • Fax Box
  2. Caller ID

    • Statically set Caller ID
    • Dynamically set Caller ID
    • Prepend Caller ID
    • Routing via Whitelist or Regex of Caller IDs

Callflow actions (cont)#

  1. Features

    • Eavesdrop
    • Group Pickup
    • Intercept
    • Page Groups
    • Hotdesk
  2. Miscellaneous

    • Toggle call forwarding
    • Toggle Do Not Disturb
    • Directory services
    • DISA
    • Detect incoming fax
    • Menus
    • Custom Webhook

Brainstorm#

  1. Possible Integrations

    • Calendars (Office365, Google, etc)
    • Put received media (vm, fax) into services (storage, chat)
    • Ad-driven, free calling?
    • Digital assistants
    • IVR Analytics (track stats as callers progress)
    • CRM/Salesforce access
    • Combine with metaflows and webhooks: call queues
    • Your Ideas?

What's Next?#

  1. In Progress

    • Building automated doc generation
    • Continuing to add callflow actions
  2. How can you help?

    • Build, build, build!
    • Blog, blog, blog!
    • Contribute to the docs effort
      • Take ref docs and create/update the real docs

Thank You#