Stock Plugins Documentation¶
View Plugins¶
default_json¶
View name: default_json
Purpose: present directory entries in JSON format.
Note
For purpose of alphabetic ordering in results, accented character are converted to unaccented.
Field used to order result
Field for ordering is selected based on configuration of view/display. First non-empty field with type name is used. If there is no relevant value available, the result goes to end.
Relevance of results in lookup
Lookup results are ordered in way to prefer more relevant results:
- exact matches of whole word
- exact matches at beginning of word
- exact matches anywhere
- matches similar to term
headers¶
View name: headers
Purpose: List headers that will be available in results from default_json
view.
personal_view¶
View name: personal_view
Purpose: Expose REST API to manage personal contacts (create, delete, list).
phonebook_view¶
View name: phonebook_view
Purpose: Expose REST API to manage xivo-dird’s internal phonebooks.
aastra_view¶
View name: aastra_view
Purpose: Expose REST API to search in configured directories for Aastra phone.
cisco_view¶
View name: cisco_view
Purpose: Expose REST API to search in configured directories for Cisco phone (see CiscoIPPhone_XML_Objects).
polycom_view¶
View name: polycom_view
Purpose: Expose REST API to search in configured directories for Polycom phone.
snom_view¶
View name: snom_view
Purpose: Expose REST API to search in configured directories for Snom phone.
thomson_view¶
View name: thomson_view
Purpose: Expose REST API to search in configured directories for Thomson phone.
yealink_view¶
View name: yealink_view
Purpose: Expose REST API to search in configured directories for Yealink phone.
Service Plugins¶
lookup¶
Service name: lookup
Purpose: Search through multiple data sources, looking for entries matching a word.
Configuration¶
Example (excerpt from the main configuration file):
1 2 3 4 5 6 | services:
lookup:
default:
sources:
- my_csv
timeout: 0.5
|
The configuration is a dictionary whose keys are profile names and values are configuration specific to that profile.
For each profile, the configuration keys are:
- sources
- The list of source names that are to be used for the lookup
- timeout
- The maximum waiting time for an answer from any source. Results from sources that take longer to answer are ignored. Default: no timeout.
favorites¶
Service name: favorites
Purpose: Mark/unmark contacts as favorites and get the list of all favorites.
phonebook¶
Service name: phonebook
Purpose: Add, delete, list phonebooks and phonebook contacts.
Configuration¶
Example (excerpt from the main configuration file):
1 2 3 4 5 6 | services:
favorites:
default:
sources:
- my_csv
timeout: 0.5
|
The configuration is a dictionary whose keys are profile names and values are configuration specific to that profile.
For each profile, the configuration keys are:
- sources
- The list of source names that are to be used for the lookup
- timeout
- The maximum waiting time for an answer from any source. Results from sources that take longer to answer are ignored. Default: no timeout.
reverse¶
Service name: reverse
Purpose: Search through multiple data sources, looking for the first entry matching an extension.
Configuration¶
Example:
1 2 3 4 5 6 | services:
reverse:
default:
sources:
- my_csv
timeout: 1
|
The configuration is a dictionary whose keys are profile names and values are configuration specific to that profile.
For each profile, the configuration keys are:
- sources
- The list of source names that are to be used for the reverse lookup
- timeout
- The maximum waiting time for an answer from any source. Results from sources that take longer to answer are ignored. Default: 1.
Back-end Configuration¶
This sections completes the Sources Configuration section.
csv¶
Back-end name: csv
Purpose: read directory entries from a CSV file.
Limitations:
- the CSV delimiter is not configurable (currently:
,
(comma)).
Configuration¶
Example (a file inside source_config_dir
):
1 2 3 4 5 6 7 8 9 10 11 12 13 | type: csv
name: my_csv
file: /var/tmp/test.csv
unique_column: id
searched_columns:
- fn
- ln
first_matched_columns:
- num
format_columns:
lastname: "{ln}"
firstname: "{fn}"
number: "{num}"
|
With the CSV file:
1 2 3 4 | id,fn,ln,num
1,Alice,Abrams,55553783147
2,Bob,Benito,5551354958
3,Charles,Curie,5553132479
|
- file
- the absolute path to the CSV file
CSV web service¶
Back-end name: csv_ws
Purpose: search using a web service that returns CSV formatted results.
Given the following configuration, xivo-dird would call “https://example.com:8000/ws-phonebook?firstname=alice&lastname=alice” for a lookup for the term “alice”.
Configuration¶
Example (a file inside source_config_dir
):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | type: csv_ws
name: a_csv_web_service
lookup_url: "https://example.com:8000/ws-phonebook"
list_url: "https://example.com:8000/ws-phonebook"
verify_certificate: False
searched_columns:
- firstname
- lastname
first_matched_columns:
- exten
delimiter: ","
timeout: 16
unique_column: id
format_columns:
number: "{exten}"
|
- lookup_url
- the URL used for directory searches.
- list_url (optional)
- the URL used to list all available entries. This URL is used to retrieve favorites.
- verify_certificate (optional)
- whether the SSL cert will be verified. A CA_BUNDLE path can also be provided. Defaults to True.
- delimiter (optional)
- the field delimiter in the CSV result. Default: ‘,’
- timeout (optional)
- the number of seconds before the lookup on the web service is aborted. Default: 10.
dird_phonebook¶
back-end name: dird_phonebook
Purpose: search the xivo-dird’s internal phonebooks
Configuration:¶
1 2 3 4 5 6 7 8 9 10 11 12 13 | type: dird_phonebook
name: phonebook
db_uri: 'postgresql://asterisk:proformatique@localhost/asterisk'
tenant: default
phonebook_id: 42
phonebook_name: main
first_matched_columns:
- number
searched_columns:
- firstname
- lastname
format_columns:
name: "{firstname} {lastname}"
|
- db_uri
- the URI of the DB used by xivo-dird to store the phonebook.
- tenant
- the tenant of the phonebook to query.
- phonebook_name
- the name of the phonebook used by this source.
- phonebook_id (deprecated, use phonebook_name)
- the id of the phonebook used by this source.
ldap¶
Back-end name: ldap
Purpose: search directory entries from an LDAP server.
Configuration¶
Example (a file inside source_config_dir
):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | type: ldap
name: my_ldap
ldap_uri: ldap://example.org
ldap_base_dn: ou=people,dc=example,dc=org
ldap_username: cn=admin,dc=example,dc=org
ldap_password: foobar
ldap_custom_filter: (l=québec)
unique_column: entryUUID
searched_columns:
- cn
first_matched_columns:
- telephoneNumber
format_columns:
firstname: "{givenName}"
lastname: "{sn}"
number: "{telephoneNumber}"
|
- ldap_uri
- the URI of the LDAP server. Can only contains the scheme, host and port part of an LDAP URL.
- ldap_base_dn
- the DN of the entry at which to start the search
- ldap_username (optional)
the user’s DN to use when performing a “simple” bind.
Default to an empty string.
When both ldap_username and ldap_password are empty, an anonymous bind is performed.
- ldap_password (optional)
the password to use when performing a “simple” bind.
Default to an empty string.
- ldap_custom_filter (optional)
the custom filter is used to add more criteria to the filter generated by the back end.
Example:
- ldap_custom_filter: (l=québec)
- searched_columns: [cn,st]
will result in the following filter being used for searches.
(&(l=québec)(|(cn=*%Q*)(st=*%Q*)))
If only the custom filter is to be used, leave the
searched_columns
field empty.This must be a valid LDAP filter, where the string
%Q
will be replaced by the (escaped) search term when performing a search.Example:
(&(o=ACME)(cn=*%Q*))
- ldap_network_timeout (optional)
the maximum time, in second, that an LDAP network operation can take. If it takes more time than that, no result is returned.
Defaults to 0.3.
- ldap_timeout (optional)
the maximum time, in second, that an LDAP operation can take.
Defaults to 1.0.
- unique_column (optional)
the column that contains a unique identifier of the entry. This is necessary for listing and identifying favorites.
For OpenLDAP, you should set this option to “entryUUID”.
For Active Directory, you should set this option to “objectGUID” and also set the “unique_column_format” option to “binary_uuid”.
- unique_column_format (optional)
the unique column’s type returned by the queried LDAP server. Valid values are “string” or “binary_uuid”.
Defaults to “string”.
phonebook¶
Back-end name: phonebook
Purpose: search directory entries from a XiVO phone book.
Configuration¶
Example (a file inside source_config_dir
):
1 2 3 4 5 6 7 8 9 10 11 12 | type: phonebook
name: my_phonebook
phonebook_url: https://example.org/service/ipbx/json.php/restricted/pbx_services/phonebook
phonebook_username: admin
phonebook_password: foobar
first_matched_columns:
- phonebooknumber.office.number
- phonebooknumber.mobile.number
format_columns:
firstname: "{phonebook.firstname}"
lastname: "{phonebook.lastname}"
number: "{phonebooknumber.office.number}"
|
- phonebook_url (optional)
the phonebook’s URL.
Default to
http://localhost/service/ipbx/json.php/private/pbx_services/phonebook
.The URL to use differs depending on if you are accessing the phone book locally or remotely:
- Local:
http://localhost/service/ipbx/json.php/private/pbx_services/phonebook
- Remote:
https://example.org/service/ipbx/json.php/restricted/pbx_services/phonebook
- Local:
- phonebook_username (optional)
the username to use in HTTP requests.
No HTTP authentication is tried when phonebook_username or phonebook_password are empty.
- phonebook_password (optional)
- the password to use in HTTP requests.
- phonebook_timeout (optional)
the HTTP request timeout, in seconds.
Defaults to 1.0.
To be able to access the phone book of a remote XiVO, you must create a web services access user (
) on the remote XiVO.personal¶
Back-end name: personal
Purpose: search directory entries among users’ personal contacts
You should only have one source of type personal
, because only one will be used to list personal
contacts. The personal
backend needs a working Consul installation. This backend works with the
personal service, which allows users to add personal contacts.
The complete list of fields is in Personal contacts.
Configuration¶
Example (a file inside source_config_dir
):
1 2 3 4 5 6 7 8 | type: personal
name: personal
first_matched_columns:
- number
format_columns:
firstname: "{firstname}"
lastname: "{lastname}"
number: "{number}"
|
unique_column
is not configurable, its value is always id
.
xivo¶
Back-end name: xivo
Purpose: add users from a XiVO (may be remote) as directory entries
Configuration¶
Example (a file inside source_config_dir
):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | type: xivo
name: my_xivo
confd_config:
https: True
host: xivo.example.com
port: 9486
version: 1.1
username: admin
password: password
timeout: 3
unique_column: id
first_matched_columns:
- exten
searched_columns:
- firstname
- lastname
format_columns:
number: "{exten}"
mobile: "{mobile_phone_number}"
|
- confd_config:host
- the hostname of the XiVO (more precisely, of the xivo-confd service)
- confd_config:port
- the port of the xivo-confd service (usually 9486)
- confd_config:version
- the version of the xivo-confd API (should be 1.1)
xivo_meetingroom¶
Back-end name: xivo_meetingroom
Purpose: search directory entries among meetingrooms (static or personal)
You should only have one source of type xivo_meetingroom
.
Configuration¶
The configuration should be as follow (a file inside source_config_dir
):
1 2 3 4 5 6 7 8 9 10 11 12 | type: xivo_meetingroom
name: xivo_meetingroom
db_uri: postgresql://asterisk:proformatique@localhost/asterisk
searched_columns:
- name
- display_name
- number
format_columns:
display_name: '{display_name}'
name: '{display_name}'
phone: '{number}'
get_all_rooms_keywords: conference, visio
|
- get_all_rooms_keywords
- keywords used to return all meeting rooms (both static and relevant personal) -
should be lowercase and separated by coma
,
unique_column
is not configurable, its value is always id
.