Asterisk channel target

Controls package and verification commands.

arctan-accent-asterisk_0.4.0-1_amd64.deb is available.

Accent Conversion / Asterisk

Install Accent Conversion For Asterisk

Follow these commands in order. Do not skip verification steps; they confirm the module is installed, licensed, attached to the correct agent endpoint, receiving processable audio, and authorized for Accent Conversion.

1. Run Preflight Checks

Run these commands on the PBX before installing anything. Save the output if you need Arctan support to verify compatibility.

sudo -v
cat /etc/os-release
uname -m
asterisk -V
sudo asterisk -rx "core show version"
sudo asterisk -rx "core waitfullybooted"
sudo asterisk -rx "module show like chan_sip"
# Optional if you already know the agent endpoint names.
sudo asterisk -rx "sip show peers"
sudo asterisk -rx "module show like app_queue"

Expected result for the selected target:

  • OS matches Ubuntu 19.10.
  • Architecture is x86_64. Debian package architecture is amd64.
  • Asterisk reports Asterisk 11.25.3.
  • If the agent endpoint names are not already known, use sip show peersto identify them.
  • Custom or source-built Asterisk installs may need a local module rebuild after package installation.

2. Download, Verify, And Install

Arctan support provides the distribution token and SDK key. The distribution token downloads the package. The SDK key is entered later during configuration.

export ARCTAN_PACKAGE="arctan-accent-asterisk_0.4.0-1_amd64"

# Obtain ${ARCTAN_PACKAGE}.zip from the secure download link supplied by
# Arctan support for this exact operating system and Asterisk version.
unzip -o "${ARCTAN_PACKAGE}.zip"
cd "${ARCTAN_PACKAGE}"
sha256sum -c "${ARCTAN_PACKAGE}.deb.sha256"
sudo apt install "./${ARCTAN_PACKAGE}.deb"

Verify the package files are installed:

dpkg -l | grep -E 'arctan-(vi|accent)-asterisk'
dpkg -L arctan-accent-asterisk | grep -E 'arctan-vi-asterisk.so|arctan-vi-asterisk-setup|arctan-vi-asterisk.conf|/usr/src/arctan-vi-asterisk'
sudo test -f /usr/lib/asterisk/modules/arctan-vi-asterisk.so && echo "module file present"
sudo test -x /usr/bin/arctan-vi-asterisk-setup && echo "setup helper present"
sudo test -d /usr/src/arctan-vi-asterisk && echo "local rebuild source present"

3. Configure The SDK Key

This writes /etc/asterisk/arctan-vi-asterisk.conf, protects it, and verifies that the Asterisk service user can read the configuration.

sudo arctan-vi-asterisk-setup configure

Enter the values when prompted:

Arctan SDK key: <sdk-key-from-arctan>
Customer ID: <customer-or-deployment-id>

Confirm the config file exists and is readable by the service path:

sudo ls -l /etc/asterisk/arctan-vi-asterisk.conf
sudo arctan-vi-asterisk-setup inspect
sudo arctan-vi-asterisk-setup verify

4. Configure Agent Endpoint Prefixes

Configure only human agent endpoints. Do not allow a trunk, IVR, public inbound route, or broad prefix such as SIP/.

If you already know the agent endpoint names, skip this lookup. Otherwise, list the configured SIP endpoints:

sudo asterisk -rx "sip show peers"

If the endpoint is 1509, the live channel usually looks like SIP/1509-00000005. The effective policy prefix must be SIP/1509-.

Choose The Processing Side For Each Extension

Add :agent, :customer, or :bothto an allowed agent prefix to choose which call leg is processed for that extension. The prefix always identifies the known agent extension; the suffix does not change which endpoint is the agent.

  • SIP/1509-:agent processes only agent 1509.
  • SIP/1510-:customer uses agent 1510 as the selector and processes only its eligible bridged customer peer.
  • SIP/1511-:both processes agent 1511 and its eligible bridged customer peer.

An entry without a suffix inherits the deployment-wide processing.side setting, whose default is agent. :customer and :bothrequire an unambiguous eligible peer in the Asterisk bridge. If no eligible peer exists, or multiple eligible peers make the choice ambiguous, customer-side attachment is skipped.

For side-qualified entries, use the complete channel prefix. Do not enter 1509:agent; the setup helper expands a plain extension only when it has no side suffix.

sudo arctan-vi-asterisk-setup configure-policy \
  --allowed-prefixes "SIP/1509-:agent,SIP/1510-:customer,SIP/1511-:both"

Open the policy editor:

sudo arctan-vi-asterisk-setup configure-policy
# One human agent per line. This replaces the current list.
# Use extensions when possible; 1509 becomes SIP/1509-.
# Add :agent, :customer, or :both to override processing.side for an extension.
SIP/1509-:agent
SIP/1510-:customer
SIP/1511-:both

# No suffix uses the global processing.side setting:
1509
# Also valid without a side override: SIP/1509 or SIP/1509-

# Do not add SIP/, trunks, IVRs, queues, or public inbound routes.
# Order matters. Arctan may cap how many listed endpoints are eligible at once.

Save and close the editor: in nano press Ctrl+O, Enter, Ctrl+X. In vi/vim press Esc, type :wq, then press Enter. When the processing setting prompt appears, press Enter to keep the shown default unless Arctan support gave another value.

Reload and verify the effective policy:

sudo asterisk -rx "arctan vi reload"
sudo asterisk -rx "arctan vi show" | grep -E 'processing.side|policy.cli_updates_allowed|processing.max_concurrent_streams|processing.output_gain|agent_policy.allowed_channel_prefixes|agent_policy.effective_allowed_channel_prefixes|peer_lookup_|side_agent_attaches|side_customer_attaches'

Confirm agent_policy.effective_allowed_channel_prefixespreserves each configured suffix. processing.side is the fallback for entries without one. One :agent or:customer call uses one processing stream; a:both call uses two.

If Arctan support asks you to adjust output gain from the module CLI, use the same policy path. Values are clamped by the module and must be between 0.0 and 4.0.

sudo arctan-vi-asterisk-setup configure-policy --output-gain 1.5
sudo asterisk -rx "arctan vi show" | grep -E 'processing.output_gain|processor.status|license.state'

5. Rebuild Locally If Verify Requires It

Most standard installs for the selected Asterisk target can use the packaged module directly. If verify or module load reports an Asterisk build-option or header mismatch, rebuild the module on that PBX, then rerun verification.

sudo arctan-vi-asterisk-setup build-module
sudo arctan-vi-asterisk-setup verify

If Asterisk headers are installed in a non-standard location, pass the include directory explicitly:

sudo arctan-vi-asterisk-setup build-module --asterisk-include-dir /path/to/asterisk/include
sudo arctan-vi-asterisk-setup verify

6. Load The Module And Verify Status

Load the module if it is not already loaded. Reload it if it is already present.

sudo asterisk -rx "module show like arctan-vi-asterisk"

If the module is not listed:

sudo asterisk -rx "module load arctan-vi-asterisk.so"

If the module is already listed:

sudo asterisk -rx "arctan vi reload"

Now verify the module status, policy, and license:

sudo arctan-vi-asterisk-setup verify
sudo asterisk -rx "arctan vi show" | grep -E 'arctan-vi-asterisk module|processing.vi_mode|processor.status|processing.output_gain|license.state|license.validation|license.model|agent_policy.effective_allowed_channel_prefixes'
sudo asterisk -rx "arctan vi license show"

Expected result:

  • The Arctan module is listed.
  • processor.status does not report an error.
  • processing.vi_mode reports accent.
  • processing.output_gain reports the value assigned by the deployment policy.
  • license.state is valid.
  • license.model points to the authorized model for the configured chunk size.
  • agent_policy.effective_allowed_channel_prefixes contains the intended agent prefixes.

7. WebRTC And Opus Checks

Run this section only if agents use browser/WebRTC clients with Opus. The Arctan module receives PCM frames from Asterisk; Asterisk must decode Opus to signed-linear PCM first.

sudo arctan-vi-asterisk-setup print-webrtc-checks
sudo asterisk -rx "module show like opus"
sudo asterisk -rx "core show translation paths opus"

If codec_opus.so is missing or no Opus-to-slin path is shown, install the optional Asterisk Opus translator:

sudo arctan-vi-asterisk-setup install-opus --yes

If Opus was newly installed, restart Asterisk in a maintenance window and verify again:

sudo systemctl restart asterisk
sudo asterisk -rx "core waitfullybooted"
sudo asterisk -rx "module show like opus"
sudo asterisk -rx "core show translation paths opus"

res_format_attr_opus.so alone is not enough. It understands Opus attributes but does not decode Opus audio.

8. Make One Real Test Call

Use one configured human agent endpoint and one customer leg. The test passes only when the Arctan counters change during the call and the completed session shows processed audio.

Before the call, capture a baseline:

sudo asterisk -rx "arctan vi show" | grep -E 'active_hooks|hooks_attached|hooks_detached|voice_read_noop_processed|processor_frames_processed|processor_errors|agent_policy_denials|single_side_denials|max_concurrent_stream_denials|guard_reservations|guard_releases|active_guarded_calls'
sudo asterisk -rx "arctan vi sessions"

Place the call and speak from the agent side for at least 15 seconds. While the call is still active, run:

sudo asterisk -rx "arctan vi show" | grep -E 'active_hooks|hooks_attached|voice_read_noop_processed|processor_frames_processed|processor_errors|agent_policy_denials|single_side_denials|max_concurrent_stream_denials|active_guarded_calls'
sudo asterisk -rx "core show channels concise" | grep -E 'PJSIP|SIP|Local'

During a working call, verify these signs before hanging up:

  • active_hooks is greater than 0.
  • hooks_attached is higher than the baseline value.
  • voice_read_noop_processed is increasing while the agent speaks.
  • processor_frames_processed is increasing while the agent speaks.
  • processor_errors remains 0.

If active_hooks stays 0, compare the live channel name from core show channels concise withagent_policy.effective_allowed_channel_prefixes. The agent channel must start with one allowed prefix, for exampleSIP/1509-.

After the call ends, verify the completed session:

sudo asterisk -rx "arctan vi show" | grep -E 'hooks_attached|hooks_detached|voice_read_noop_processed|processor_frames_processed|processor_errors|agent_policy_denials|single_side_denials|max_concurrent_stream_denials|guard_reservations|guard_releases|active_guarded_calls|last_read_format|last_read_codec|last_read_sample_rate'
sudo asterisk -rx "arctan vi sessions" | tail -n 5
sudo journalctl -u asterisk --since "30 minutes ago" | grep -i arctan | tail -n 100

The test is successful when:

  • The latest session appears in arctan vi sessions.
  • The latest session shows processed audio greater than 0.
  • The latest session shows errors equal to 0.
  • hooks_detached increases after the call ends.
  • guard_releases catches up with guard_reservations.
  • active_guarded_calls returns to 0.
  • processor_errors remains 0.

If the test does not pass, use these counters to identify the next step:

  • agent_policy_denials increased: update the allowed agent endpoint prefixes.
  • single_side_denials increased: the same linked call already has a processed side; test with one intended agent leg.
  • max_concurrent_stream_denials increased: the stream limit is reached; retry with no other active processed calls.
  • processor_frames_processed stays unchanged: verify codec/sample-rate lines and run the WebRTC/Opus checks if the agent uses a browser client.