### Install Python Plugin Source: https://wazo-platform.org/uc-doc/system/wazo-webhookd Execute the setup script to install the custom plugin into the environment. ```bash python setup.py install ``` -------------------------------- ### Package Directory Creation Example Source: https://wazo-platform.org/uc-doc/contributors/plugins Demonstrates how to create directories within the package directory (`pkgdir`) for installing files. This example ensures the `/etc/foo` directory exists before copying a `bar` file into it. ```shell mkdir -p ${pkgdir}/etc/foo cp bar ${pkgdir}/etc/foo/bar ``` -------------------------------- ### Install All Firmware for a Plugin Source: https://wazo-platform.org/uc-doc/contributors/provisioning/managing_plugins Demonstrates how to install all firmware packages for a specific plugin version using the wazo-provd-cli. The example shows listing installed plugins and then installing all firmware for 'wazo-snom-8.7.5.35'. ```python wazo-provd-cli> list(plugins.installed()) ['wazo-snom-8.7.5.35', 'wazo-cisco-sccp-legacy', 'wazo-snom-8.9.3.40', 'wazo-aastra-4.2.0', 'wazo-aastra-3.3.1-SP4', 'wazo-aastra-3.2.2.1136', 'wazo-cisco-sccp-9.4', 'null'] wazo-provd-cli> p = plugins['wazo-snom-8.7.5.35'] wazo-provd-cli> p.install_all() ``` -------------------------------- ### Example Provisioning Plugin Development Source: https://wazo-platform.org/uc-doc/contributors/provisioning/developing_plugins This example demonstrates the development of a provisioning plugin for Digium phones. The complete code is available on GitHub. Refer to the guide on adding models to existing plugins if that is your goal. ```python from wazo_provd.plugins.base import BasePlugin class DigiumPlugin(BasePlugin): """Digium plugin. This plugin is used to provision Digium phones. """ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) def get_config(self, mac_address): """Get the configuration for a given MAC address. Args: mac_address (str): The MAC address of the phone. Returns: dict: The configuration for the phone. """ return { "digium_setting_1": "value_1", "digium_setting_2": "value_2", } def get_firmware(self, mac_address): """Get the firmware for a given MAC address. Args: mac_address (str): The MAC address of the phone. Returns: dict: The firmware for the phone. """ return { "firmware_version": "1.0.0", "firmware_url": "http://example.com/firmware.bin", } def get_template(self, mac_address): """Get the template for a given MAC address. Args: mac_address (str): The MAC address of the phone. Returns: str: The template for the phone. """ return "template.xml" def get_phone_model(self, mac_address): """Get the phone model for a given MAC address. Args: mac_address (str): The MAC address of the phone. Returns: str: The phone model. """ return "Digium D40" ``` -------------------------------- ### Install a Plugin Source: https://wazo-platform.org/uc-doc/administration/plugins Use this command to install a plugin. Specify the installation method (e.g., git), the source URL, and optionally a reference (tag or branch). ```bash wazo-plugind-cli -c "install [--ref reference] [--async]" ``` ```bash wazo-plugind-cli -c "install git https://github.com/myorg/myplugin --ref v1.0" ``` -------------------------------- ### Install Wazo-libsccp from Git Source: https://wazo-platform.org/uc-doc/contributors/sccp Installs necessary packages, clones the wazo-libsccp repository, and compiles and installs the library. ```bash apt-get update && apt-get install build-essential asterisk-dev git clone https://github.com/wazo-platform/wazo-libsccp.git cd wazo-libsccp make make install ``` -------------------------------- ### Plugin Install Progress Event Example Source: https://wazo-platform.org/uc-doc/api_sdk/message_bus This event tracks the progress of a plugin installation. It includes the installation task UUID and its current status. ```json { "name": "plugin_install_progress", "origin_uuid": "ca7f87e9-c2c8-5fad-ba1b-c3140ebb9be3", "data": { "uuid": "8e58d2a7-cfed-4c2e-ac72-14e0b5c26dc2", "status": "completed" } } ``` -------------------------------- ### Install and Run Pre-commit Source: https://wazo-platform.org/uc-doc/contributors/typing Commands to install and execute pre-commit hooks. ```bash pip install pre-commit # To run automatically as hook pre-commit install # To run manually pre-commit run --all-files ``` -------------------------------- ### Install and Configure Plugin Source: https://wazo-platform.org/uc-doc/system/wazo-confgend/developer Commands and configuration to install the plugin and enable it in wazo-confgend. ```bash python setup.py install ``` ```yaml plugins: asterisk.sip.conf: my_driver ``` ```bash systemctl restart wazo-confgend.service ``` -------------------------------- ### Install build dependencies Source: https://wazo-platform.org/uc-doc/contributors/debug_asterisk Install all required packages to build Asterisk from source. ```bash apt-get build-dep -y asterisk ``` -------------------------------- ### Plugin Registration Example Source: https://wazo-platform.org/uc-doc/system/wazo-dird/developer An example of a setup.py file demonstrating how to register Back-End, Service, and View plugins for wazo-dird using setuptools entry points. ```APIDOC ## Plugin Registration Example ### Description This example `setup.py` shows how to register different types of plugins (service, backend, view) for wazo-dird using setuptools entry points. ### Code Example ```python #!/usr/bin/env python3 from setuptools import setup from setuptools import find_packages setup( name='Wazo dird plugin sample', version='0.0.1', description='An example program', packages=find_packages(), entry_points={ 'wazo_dird.services': [ 'my_service = dummy:DummyServicePlugin', ], 'wazo_dird.backends': [ 'my_backend = dummy:DummyBackend', ], 'wazo_dird.views': [ 'my_view = dummy:DummyView', ], } ) ``` ``` -------------------------------- ### Install Jitsi Plugin Source: https://wazo-platform.org/uc-doc/administration/provisioning/jitsi Use this command to install a Jitsi plugin for Wazo softphone provisioning. Ensure Jitsi is installed and a SIP line is created beforehand. ```bash wazo-jitsi-1 ``` -------------------------------- ### Pre-commit Configuration Example Source: https://wazo-platform.org/uc-doc/contributors/typing Example configuration for .pre-commit-config.yaml including flake8, black, and mypy. ```yaml # See https://pre-commit.com for more information repos: - repo: https://github.com/PyCQA/flake8 rev: '6.0.0' hooks: - id: flake8 # Required to make flake8 read from pyproject.toml for now :( additional_dependencies: ['flake8-pyproject'] - repo: https://github.com/psf/black rev: 22.12.0 hooks: - id: black - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.19.1 hooks: - id: mypy language_version: '3.11' additional_dependencies: # Only include the stubs required for your project - 'types-flask' - 'types-psycopg2' - 'types-pytz' - 'types-pyyaml' - 'types-requests' - 'types-setuptools' - 'types-werkzeug' ``` -------------------------------- ### Run Installation Playbook Source: https://wazo-platform.org/uc-doc/installation Execute the Ansible playbook to install the Wazo Platform. ```bash ansible-playbook -i inventories/uc-engine uc-engine.yml ``` -------------------------------- ### Provision System Dependencies Source: https://wazo-platform.org/uc-doc/installation Install essential tools required for the Wazo Platform installation process. ```bash apt update apt install -yq sudo git ansible curl ``` -------------------------------- ### Install Hostapd and Networking Tools Source: https://wazo-platform.org/uc-doc/contributors/sccp Installs necessary packages for setting up a wireless access point on Debian. ```bash apt-get install wireless-tools hostapd bridge-utils ``` -------------------------------- ### Install Valgrind Source: https://wazo-platform.org/uc-doc/contributors/debug_asterisk Install the Valgrind memory debugging tool. ```bash apt-get install valgrind ``` -------------------------------- ### Install cups-client Package Source: https://wazo-platform.org/uc-doc/administration/fax Install the `cups-client` package on Wazo to enable the printer backend for fax reception. ```bash apt-get install cups-client ``` -------------------------------- ### Install Coverage Tool Source: https://wazo-platform.org/uc-doc/contributors/profile_python Install the coverage package via pip. ```bash pip install coverage ``` -------------------------------- ### Install vanilla Asterisk Source: https://wazo-platform.org/uc-doc/contributors/debug_asterisk Switch the current Asterisk installation to the vanilla version for upstream debugging. ```bash wazo-dist -a wazo-25.15 apt-get update apt-get install -t wazo-25.15 asterisk-vanilla asterisk-vanilla-dbgsym xivo-fix-paths-rights wazo-dist -m pelican-bookworm ``` -------------------------------- ### Yealink Firmware Installation Method Source: https://wazo-platform.org/uc-doc/contributors/provisioning/add_phone_to_plugin Specifies the installation steps for Yealink firmware, such as copying ROM files. Used in `pkgs.db`. ```ini [install_yealink-fw] a-b: cp *.rom firmware/ ``` -------------------------------- ### Wait Ratio Threshold Examples Source: https://wazo-platform.org/uc-doc/contact_center/queues Examples demonstrating how the wait_ratio_threshold calculation determines if a call is redirected. ```text wait_ratio_threshold: 1 Current number of waiting calls: 2 Current number of logged-in agents: 2 Number of waiting calls per logged-in agent when a new call arrives: 3 / 2 = 1.5 Call will be redirected to ``wait_ratio_destination`` ``` ```text wait_ratio_threshold: 0.5 Number of waiting calls: 5 Number of logged-in agents: 12 Number of waiting calls per logged-in agent when a new call arrives: 6 / 12 = 0.5 Call will not be redirected to ``wait_ratio_destination`` ``` ```text wait_ratio_threshold: 0.5 Current number of waiting calls: 0 Current number of logged-in agents: 1 Number of waiting calls per logged-in agent when a new call arrives: 1 / 1 = 1 ``` -------------------------------- ### Install Coverage Dependencies Source: https://wazo-platform.org/uc-doc/contributors/profile_python Install necessary system packages for running coverage analysis. ```bash apt-get install python-pip build-essential python-dev ``` -------------------------------- ### Install a New Plugin and Update Devices Source: https://wazo-platform.org/uc-doc/upgrade/upgrade_notes_details/22-16/provd_plugins_python3 Install a newer version of a plugin and use a helper function to update devices associated with the old plugin. This is useful when replacing an outdated plugin. ```bash root@stack:~# wazo-provd-cli wazo-provd-cli> plugins.install('wazo-polycom-4.0.11') 'install' in progress... 'download' in progress... 0/7735 'download' done. 7735/7735 'install' done. wazo-provd-cli> helpers.mass_update_devices_plugin('xivo-polycom-4.0.9', 'wazo-polycom-4.0.11', recurse=True) Error: plugin xivo-polycom-4.0.9 is not installed Do you want to proceed anyway? [Y/n] Y Updating device 06afddf697f24a3eb0e8bc7dd415a57e wazo-provd-cli> ``` -------------------------------- ### Example of Skill Part Usage Source: https://wazo-platform.org/uc-doc/contact_center/skillbasedrouting Shows how to reference a skill with a specific value threshold. This example also includes meta-variables for dynamic substitution. ```plaintext english > 50 ``` ```plaintext technic ! 0 & ($os > 29 & $lang > 39 | $os > 39 & $lang > 19) ``` -------------------------------- ### Get Help Source: https://wazo-platform.org/uc-doc/administration/plugins Use the 'help' command to view all available commands or to get usage details for a specific command. ```bash wazo-plugind-cli -c 'help' ``` ```bash wazo-plugind-cli -c 'help ' ``` -------------------------------- ### HTTP GET Request Example Source: https://wazo-platform.org/uc-doc/contributors/provisioning/httptftp-requests-processing-in-provd-part-2 This is an example of an HTTP GET request made by an Aastra phone to retrieve its configuration file. ```http GET /Aastra/aastra.cfg HTTP/1.1 User-Agent: Aastra6731i MAC:00-11-22-33-44-55 V:3.2.2.1136-SIP ``` -------------------------------- ### Install a Private Plugin Source: https://wazo-platform.org/uc-doc/administration/plugins To install a plugin from a private Git repository, embed your access token or credentials directly in the URL. This method relies on the Git hosting service supporting this format. ```bash wazo-plugind-cli -c "install git https://@github.com/myorg/myprivateplugin" ``` -------------------------------- ### Delete Voicemail Example Request Source: https://wazo-platform.org/uc-doc/api_sdk/rest_api/sysconfd/asterisk_voicemail An example of an HTTP GET request to delete a voicemail. ```http GET /delete_voicemail HTTP/1.1 Host: wazoserver Accept: application/json ``` -------------------------------- ### Registering wazo-dird plugins in setup.py Source: https://wazo-platform.org/uc-doc/system/wazo-dird/developer Use the entry_points argument in setuptools.setup to register Back-End, Service, and View plugins. ```python #!/usr/bin/env python3 from setuptools import setup from setuptools import find_packages setup( name='Wazo dird plugin sample', version='0.0.1', description='An example program', packages=find_packages(), entry_points={ 'wazo_dird.services': [ 'my_service = dummy:DummyServicePlugin', ], 'wazo_dird.backends': [ 'my_backend = dummy:DummyBackend', ], 'wazo_dird.views': [ 'my_view = dummy:DummyView', ], } ) ``` -------------------------------- ### Define setup.py for Wazo Driver Source: https://wazo-platform.org/uc-doc/system/wazo-confgend/developer Configures the package and defines the entry point for the driver plugin. ```python #!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright 2016-2024 The Wazo Authors (see the AUTHORS file) # SPDX-License-Identifier: GPL-3.0-or-later from setuptools import setup from setuptools import find_packages setup( name='Wazo confgend driversample', version='0.0.1', description='An example driver', packages=find_packages(), entry_points={ 'wazo_confgend.asterisk.sip.conf': [ 'my_driver = src.driver:MyDriver', ], } ) ``` -------------------------------- ### Get HA Configuration Source: https://wazo-platform.org/uc-doc/api_sdk/rest_api/sysconfd/ha Use this GET request to retrieve the current High Availability configuration of the Wazo system. No specific setup is required beyond having access to the Wazo API. ```bash GET /get_ha_config ``` -------------------------------- ### Install Sample Plugin for wazo-purge-db Source: https://wazo-platform.org/uc-doc/system/purge_logs This setup.py file demonstrates how to create a Python library that adds a plugin to wazo-purge-db. Ensure the package name and version are correctly set. ```python #!/usr/bin/env python3 from setuptools import setup from setuptools import find_packages setup( name='wazo-purge-db-sample-plugin', version='0.0.1', description='An example program', packages=find_packages(), entry_points={ 'wazo_purge_db.archives': [ 'sample = wazo_purge_db_sample.sample:sample_plugin', ], } ) ``` -------------------------------- ### GET /provd/cfg_mgr/configs Source: https://wazo-platform.org/uc-doc/high_availability Retrieves the provisioning configuration, which is updated during HA setup to include backup registrar and proxy settings. ```APIDOC ## GET /provd/cfg_mgr/configs ### Description Retrieves provisioning configurations. When HA is enabled, this includes backup registrar and proxy addresses to allow phones to switch nodes during power failure. ### Method GET ### Endpoint /provd/cfg_mgr/configs ### Query Parameters - **q** (string) - Required - JSON query string, e.g., '{"X_type": "registrar"}' ### Response #### Success Response (200) - **registrar_backup** (string) - The IP address of the backup registrar. - **proxy_backup** (string) - The IP address of the backup proxy. ``` -------------------------------- ### Test File Structure Example Source: https://wazo-platform.org/uc-doc/contributors/style_guide Illustrates the recommended directory structure for placing test files alongside their corresponding source code within a package. ```bash ├── package1 │ ├── __init__.py │ ├── mod1.py │ └── tests/ │ ├── __init__.py │ └── test_mod1.py ├── package2/ │ ├── __init__.py │ ├── mod9.py │ └── tests/ │ ├── __init__.py │ └── test_mod9.py ``` -------------------------------- ### Check SCCP Devices Source: https://wazo-platform.org/uc-doc/administration/sccp After installing the SCCP plugin and connecting a phone, use this GET request to see if the device is detected. ```bash GET /devices ``` -------------------------------- ### Service Registered Event Example Source: https://wazo-platform.org/uc-doc/api_sdk/message_bus This event is sent when a service starts. It includes the service name, ID, address, port, and tags. ```json { "name": "service_registered_event", "origin_uuid": "ca7f87e9-c2c8-5fad-ba1b-c3140ebb9be3", "data": { "service_name": "wazo-dird", "service_id": "8e58d2a7-cfed-4c2e-ac72-14e0b5c26dc2", "address": "192.168.1.42", "port": 9495, "tags": ["wazo-dird", "ca7f87e9-c2c8-5fad-ba1b-c3140ebb9be3", "Québec"] } } ``` -------------------------------- ### Example of Ignored Configuration File (.01-critical.yml) Source: https://wazo-platform.org/uc-doc/system/configuration_files This configuration file is ignored because its name starts with a dot. It demonstrates the file naming conventions for configuration priority. ```yaml .01-critical.yml: log_level: critical ``` -------------------------------- ### Define Plugin Entry Point in setup.py Source: https://wazo-platform.org/uc-doc/system/wazo-webhookd Register the custom service class within the wazo_webhookd.services entry point to make it discoverable by the platform. ```python from setuptools import setup from setuptools import find_packages setup( name='wazo-webhookd-service-example', version='1.0', packages=find_packages(), entry_points={ 'wazo_webhookd.services': [ # * "example" is the name of the service. # It will be used when creating a subscription. # * "example_service" is the name of the directory above, # the one that contains plugin.py # * "plugin" is the name of the above file "plugin.py" # * "Service" is the name of the class shown below 'example = example_service.plugin:Service', ] } ) ``` -------------------------------- ### Configure setup.py for Email Notification Plugin Source: https://wazo-platform.org/uc-doc/system/wazo-auth/developer Defines the package metadata and registers the email notification plugin via entry points. ```python #!/usr/bin/env python3 from setuptools import find_packages, setup setup( name='auth_email_notification_proxy', version='0.1', packages=find_packages(), entry_points={ 'wazo_auth.email_notification': [ 'proxy = src.plugin:ProxyEmail', ], } ) ``` -------------------------------- ### Manual test environment setup and execution Source: https://wazo-platform.org/uc-doc/contributors/integration-tests Commands to manually prepare a virtual environment and execute tests without tox. ```bash # make test dependencies available in a virtual environment python3 -m venv .venv && pip install -r test-requirements.txt source .venv/bin/activate make test-setup make test ``` -------------------------------- ### Install Ansible Dependencies Source: https://wazo-platform.org/uc-doc/installation Install required Ansible roles for PostgreSQL. ```bash ansible-galaxy install -r requirements-postgresql.yml ``` -------------------------------- ### Start Database Replication Source: https://wazo-platform.org/uc-doc/high_availability Initiate database synchronization from the master to the slave by running `xivo-master-slave-db-replication ` on the master node. Replace `` with the actual IP address of the slave. ```bash xivo-master-slave-db-replication ``` -------------------------------- ### Start DHCP Service Source: https://wazo-platform.org/uc-doc/contributors/provisioning/nat_environment Manually start the DHCP server service. ```bash systemctl start isc-dhcp-server.service ``` -------------------------------- ### View wazo-auth CLI Help Source: https://wazo-platform.org/uc-doc/system/wazo-auth Display command-line arguments and configuration options for the wazo-auth daemon. ```text usage: wazo-auth [-h] [-c CONFIG_FILE] [-u USER] [-d] [-f] [-l LOG_LEVEL] optional arguments: -h, --help show this help message and exit -c CONFIG_FILE, --config-file CONFIG_FILE The path to the config file -u USER, --user USER User to run the daemon -d, --debug Log debug messages -l LOG_LEVEL, --log-level LOG_LEVEL Logs messages with LOG_LEVEL details. Must be one of: critical, error, warning, info, debug. Default: None ``` -------------------------------- ### Serve Coverage Report Source: https://wazo-platform.org/uc-doc/contributors/profile_python Start a local web server to view the generated coverage report. ```bash cd htmlcov python -m SimpleHTTPServer ``` -------------------------------- ### Install Ralink Firmware Source: https://wazo-platform.org/uc-doc/contributors/sccp Installs the firmware package for Ralink wireless cards on Debian. ```bash apt-get install firmware-ralink ``` -------------------------------- ### Install ISC DHCP Server Source: https://wazo-platform.org/uc-doc/contributors/provisioning/nat_environment Install the DHCP server package on the host machine. ```bash apt-get install isc-dhcp-server ``` -------------------------------- ### Start command response Source: https://wazo-platform.org/uc-doc/api_sdk/websocket The server's confirmation message after the start command is processed. ```json { "op": "start", "code": 0 } ``` -------------------------------- ### Fetch Asterisk source package Source: https://wazo-platform.org/uc-doc/contributors/debug_asterisk Prepare the environment and download the Asterisk source code. ```bash mkdir -p ~/ast-rebuild cd ~/ast-rebuild apt-get update apt-get install -y build-essential apt-get source asterisk ``` -------------------------------- ### AMI Event Example Source: https://wazo-platform.org/uc-doc/api_sdk/message_bus Example of an AMI event payload with the QueueMemberStatus binding key. ```json { "name": "QueueMemberStatus", "origin_uuid": "ca7f87e9-c2c8-5fad-ba1b-c3140ebb9be3", "data": { "Status": "1", "Penalty": "0", "CallsTaken": "0", "Skills": "", "MemberName": "sip/m3ylhs", "Queue": "petak", "LastCall": "0", "Membership": "static", "Location": "sip/m3ylhs", "Privilege": "agent,all", "Paused": "0", "StateInterface": "sip/m4ylhs" } } ``` -------------------------------- ### Example of Valid Configuration File (20-nodebug.yml) Source: https://wazo-platform.org/uc-doc/system/configuration_files This is another valid configuration file. Its settings will be overridden by '10-debug.yml' due to alphabetical order. ```yaml 20-nodebug.yml: log_level: info ``` -------------------------------- ### Setup and Run Integration Tests Manually Source: https://wazo-platform.org/uc-doc/contributors/contributing_to_wazo Manually set up and run integration tests if tox is not configured. Navigate to the 'integration_tests' directory and use 'make' commands. ```bash cd integration_tests make test-setup make test ``` -------------------------------- ### Subscribe Operation Example Source: https://wazo-platform.org/uc-doc/api_sdk/websocket Example of a subscription request to receive specific event updates. ```json { "op": "subscribe", "data": { "event_name": "endpoint_status_update" } } ``` -------------------------------- ### POST /provd/pg_mgr/install Source: https://wazo-platform.org/uc-doc/administration/provisioning/basic_configuration Installs a specific provd plugin for device support. ```APIDOC ## POST /provd/pg_mgr/install ### Description Installs a provd plugin required for device provisioning. ### Method POST ### Endpoint /provd/pg_mgr/install ``` -------------------------------- ### Install German Sound Files Source: https://wazo-platform.org/uc-doc/administration/sound_files Installs the necessary packages for German audio support on the system. ```bash apt-get install asterisk-sounds-wav-de-de wazo-sounds-de-de ``` -------------------------------- ### Create and Configure Bridge for Wireless and Wired Networks Source: https://wazo-platform.org/uc-doc/contributors/sccp Creates a bridge interface 'br0' and adds wireless ('wlan0') and wired VLAN ('eth0.341') interfaces to it, then brings the bridge up. ```bash brctl addbr br0 brctl addif br0 wlan0 brctl addif br0 eth0.341 ip link set br0 up ``` -------------------------------- ### ACL Example for Function Keys Source: https://wazo-platform.org/uc-doc/api_sdk/rest_api/acl Demonstrates an ACL configuration using the '*' wildcard to manage access to function key resources. ```text DELETE /users/{user_id}funckeys/{position} GET /users/{user_id}funckeys/{position} PUT /users/{user_id}funckeys/{position} GET /users/{user_id}funckeys/templates ``` -------------------------------- ### Install Debug Dependencies Source: https://wazo-platform.org/uc-doc/contributors/debug_asterisk Installs GDB and necessary debug symbol packages for the current Wazo version. ```bash apt-get update apt-get install gdb libc6-dbg apt-get install -t wazo-${WAZO_VERSION} asterisk-dbgsym wazo-libsccp-dbg ``` -------------------------------- ### Create Custom Template File Source: https://wazo-platform.org/uc-doc/administration/fax Navigate to the plugin directory and copy the base template to create a custom configuration file. ```bash cd /var/lib/wazo-provd/plugins/xivo-cisco-spa3102-5.1.10/var/templates/ cp ../../templates/base.tpl . ``` -------------------------------- ### Create Custom Template for All Devices Source: https://wazo-platform.org/uc-doc/administration/provisioning/adv_configuration Copy the base template and edit it to apply custom configurations to all devices using a specific plugin. Then, reconfigure and synchronize affected devices. ```bash cp templates/base.tpl var/templates vi var/templates/base.tpl wazo-provd-cli -c 'devices.using_plugin("wazo-aastra-3.3.1-SP4").reconfigure()' ``` ```bash wazo-provd-cli -c 'devices.using_plugin("wazo-aastra-3.3.1-SP4").synchronize()' ``` -------------------------------- ### Install Canadian French Sound Files Source: https://wazo-platform.org/uc-doc/administration/sound_files Installs the necessary packages for Canadian French audio support on the system. ```bash apt-get install asterisk-sounds-wav-fr-ca wazo-sounds-fr-ca ``` -------------------------------- ### Configure Service Discovery Paths Source: https://wazo-platform.org/uc-doc/system/wazo-dird/stock_plugins Example of mapping a service to a specific template file path. ```yaml services: service_discovery: template_path: /etc/wazo-dird/templates.d services: wazo-confd: template: confd.yml ``` -------------------------------- ### TFTP Request Example (SPA3102) Source: https://wazo-platform.org/uc-doc/contributors/provisioning/httptftp-requests-processing-in-provd-part-2 This example shows a TFTP request for a configuration file from a Linksys/Cisco SPA3102 phone. ```tftp GET /spa3102.cfg HTTP/1.1 ```