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.

Overview#

The knm_carriers module provides the interface to the enabled carrier modules, allowing upper-level applications a single interface to interact with carriers. The primary API concerns searching for, acquiring, and disconnecting numbers from the underlying carrier modules, as well as standardizing the results (including errors) across all carrier modules.

Behaviour#

The knm_gen_carrier module provides an Erlang behaviour which all carrier modules must implement.

There are six callbacks:

  1. find_numbers/3
  2. acquire_number/1
  3. disconnect_number/1
  4. should_lookup_cnam/0
  5. is_number_billable/1
  6. is_local/0

find_numbers/3#

The arguments are:

  1. A prefix: used to search the carrier's stock of numbers.
  2. The quantity: how many numbers matching that prefix to search for
  3. Options list: various flags the carrier module can use to refine searching

Returns either: * {ok, Numbers} where Numbers is a list of knm_search results * {bulk, Numbers} where Numbers is a list of knm_search results * {error, Reason} an error tuple

acquire_number/1#

The argument is the #knm_number{} record representing the number desired. The result is the modified #knm_number{} record. An exception is thrown on error.

disconnect_number/1#

The argument is the #knm_number{} record representing the number to be disconnected. The result is the modified #knm_number{} record. An exception is thrown on error.

should_lookup_cnam/0#

Returns a boolean for whether this carrier's numbers should be queried for CNAM.

is_number_billable/1#

The argument is the #knm_phone_number{} record.

The result is a boolean, representing whether the number should be billed.

is_local/0#

Returns a boolean for whether the carrier handles numbers local to the system.

Note: a non-local (foreign) carrier module usually makes HTTP requests.