Threads Module User Documentation

Overview

The Threads cloud module is responsible for sending audio and call events to the Threads cloud service, where they may be transcribed and searched.

Installation

Note if you have followed the quick start guide then you may skip to Post Installation Tasks

  • You will need
    • An installed, working and correctly configured instance of FreePBX or PBXact
    • Your endpoint username and password
    • Credentials for the admin login to your FreePBX/PBXact instance
  • Pre installation questions
    • Do you have a large CEL database of historic records?
      • Yes: You should probably consider running the database upgrade section out of hours
    • Do you wish to import historic call details into Threads (calls prior to Threads being installed)? (Note, this will only import the meta data about who called whom, when and for how long for, the audio will not exist so the actual transcripts cannot be generated.)
  • Process
    • Go to Admin->Module Admin
      • NOTE if you are using PBXact then you need to ensure that you are in “Advanced Mode” and go to Modules->Admin->Updates and then go to the “Module Updates” tab.
    • Click “Upload modules”
    • Select “Download (from Web)” as Type
    • Enter “https://module.threads.cloud/threadsclient-latest.tgz” as the path
    • Click “Download (From web)”
    • FreePBX will display “Module uploaded successfully. You need to enable the module using local module administration to make it available.”
    • Click on the “Manage Local Modules”, scroll down to the “Connectivity” section, expand “Threads Client” and select Action: install
    • Click “Process”
    • Confirm that you wish to install Threads Client
    • As the module inserts itself into the dialplan, you should click the “Apply Config” button if this appears in red.
    • You have now installed the module, continue with configuration

Post Installation Tasks

  • Enter your endpoint username, password and email settings in the Settings->Threads Client Configuration
  • Upgrade the CEL database
    • After Threads is installed it required three additional fields and two keys to be created on the CEL table in order to track submissions to the Threads cloud.
    • This is accomplished by going to Connectivity->Threads Client Status and clicking on “Update Database Now” in the installation tab.
    • Depending on the size of your CEL table this can take a number of minutes, so you may wish to defer this to a quiet time out of hours.
    • You will be prompted as to whether you wish to have Threads process the historic calls made before Threads was installed, if you do then be aware that this will only be the call metadata (who called whom, when and for how long) as the audio will not be in the correct format so no transcription can occur.
  • Recording Settings
    • In order to transcribe calls, either trunks, extensions or both must be set to record, these settings are also checked by the best practice analyser
      • Trunks
        • This is set in the inbound or outbound route
          • Connectivity->Inbound Routes in the “Other” tab when editing a route
          • Connectivity->Outbound Routes in the “Additional Settings” tab when editing a route
      • Extensions
        • *Applications->Extensions” in the “Advanced” tab in the “Recording Options” section when editing an extension.
  • Best Practice
    • Visit the Threads Best Practice tab and resolve any recommendations
    • You must resolve the mandatory ones (Exclamation mark in a red triangle)
    • We recommend that you resolve the optional ones (question mark in a yellow circle), but you are not required to do for the module to function.
      • Connectivity->Threads Client Status
        • Best Practice tab
  • Update your internal extensions
    • Threads uses the first and last name to tag calls for identification.
      • If these are not set it will attempt to split the display name to populate these.
    • Threads uses the email address to send transcripts where your profile requires this (although you may also override this on a per profile member basis).
  • Update your external contacts in FreePBX
    • This only applies if you are using the Contact Manager in FreePBX to populate your contact data in Threads, if you are managing your contacts in Threads then this does not apply.
    • Threads uses these external contacts to correctly identify your calls for searching and hierarchy purposes, we recommend that you keep your external contacts updated. (This is also useful as this is a source of caller identification within your PBX).
    • To manage these go to Admin->Contact Manager
  • Assign extensions to profiles
    • If you are trialling Threads then we recommend that you initially assign 1 or 2 extensions to the “Threads Trial” profile, this is enabled by Settings->Threads Client5 Profile Membership and editing the extensions you wish to assign.
    • Later you may create your own profiles from the Settings->Threads Client Profiles and then assign these as you wish, there is a section on profiles further on in this user guide.
  • Enable the Automatic Submission Task
    • After the database is upgraded you may enable the automatic submission task, this will send calls to Threads after they complete.
  • Enable storage monitoring
    • You should ensure that you are monitoring the disk space, as the recordings can consume large amounts of storage. This is enabled from Admin->System Admin Click “Storage” on the right hand side and then enter details at the bottom for storage alerts.
  • Enable purging of recordings
    • We recommend that you keep at least 30 days, but purge those older than that
    • tmpwatch is included as part of FreePBX/PBXact
  • Enable automatic updates for modules
    • We recommend that you set this to either (preferably) update, or at least to email and update your module as soon as new versions become available
    • This can be done from Admin->Module Admin, then click on the “Scheduler and Alerts” tab.
  • Enable Reload Config After Automatic Module Updates
    • Threads inserts itself into the dialplan to augment voicemail and recordings, when the module is updated, the configuration in FreePBX needs to be reloaded.
    • If you do not enable this, you will have to manually “Apply Config” to reload the FreePBX dialplan.
    • Caution This does not just apply to the Threads module, it applies to all module updates, so any dialplan changes by any module will be applied.
  • Backup
    • Ensure that you enable the Threadsclient module in backup
      • Admin -> Backup & Restore

Configuration

  • Accessed from Settings->Threads Client Configuration
  • See below for the usage of profiles in the configuration of per extension settings.
  • Each setting in the settings page has a tooltip that explains the usage of the setting.
  • Standard settings
    • Automatic submission task mode
      • When this is enabled, the automatic submission task runs once every minute.
      • There are four modes:-
        • Disabled. The task will not run, no configuration data or calls will be sent to Threads.
        • Enabled. Completed calls are sent to Threads for onward processing every minute along with any configuration changes.
        • Send a single call then disable. Used primarily for debugging, the task will send a single call when one becomes available and will then exit and disable itself. No further calls or configuration changes will be sent until you re-enable the submission task. You will receive an email when the call has been sent warning you to re-enable the task.
        • Only send configuration changes, no calls. Configuration changes will be sent but no calls. This is useful if you are making large scale changes to the Threads configuration and do not wish to have calls processed with only a partially configured system.
    • Username/password
      • These will have been supplied by Threads, they relate to a specific instance of FreePBX/PBXact, ensure that you are using the correct set for your instance in the event that you have multiple PBX installations.
      • You will not be able to save the settings if the username/password are invalid (the module validates them against the endpoint and will alert you if they fail).
    • Automatically Upgrade Database
      • Some Threads module updates will require changes to the Threads fields and indexes in the CEL table, by enabling this you allow the module updater to make these changes when the module is upgraded.
      • If you do not enable this and the module is upgraded and needs a database upgrade, then the system will suspend call submission and alert you by email that you need to apply the database changes from the Threads Client Status Installation tab.
      • We recommend that you allow database updates to occur as these events will happen out of hours when the system checks for updates
      • If this is enabled and a database upgrade is performed, you will receive an email detailing the changes made.
    • CEL Timezone
      • This is the timezone that the records in your CEL table are written as, this will normally be the same timezone that you have set elsewhere in FreePBX.
      • Amending this will cause Threads to recalculate the time for all calls already received, thereby correcting any time offset errors.
    • Enable email alerts?
      • It is recommended that you enable this. This causes the module to send emails in the event of any system errors, you can control the sender and recipient and also the interval.
    • Email from address, email to address
      • These control the sender and recipient for error notification emails, they are required,
      • Note that some emails will be sent from the main Threads system, for example if it detects an invalid configuration. In these cases, the recipient will be the “email to” address, but the from address will be the main Threads email address, not the one you have configured here.
    • Email interval
      • Provides a throttling feature, if set non-zero then emails will only be sent at this interval in minutes, if zero then they will be sent immediately. This will not apply to Unknown context alerts or errors regenerating the dialplan, these will always be sent immediately.
  • Threads settings
    • These settings affect the operation of the Threads cloud service
      • Use FreePBX Contacts
        • You have the choice of whether feed contact data from the FreePBX contact manager into Threads, or whether to use Threads to manage your contacts.
        • If you choose to use the FreePBX contact manager then you should ensure that you correctly populate all your contact details.
  • Best Practice Settings
    • This allows you to turn off some of the checks where it could be considered “noise”
    • We recommend that you leave these on and resolve the issues if possible.
    • Warn about extensions with no email
      • You can disable the check for users without emails.
    • Warn about extensions with no first or last name set
      • Threads uses the user details to populate the names.
  • Advanced settings
    • These should normally only be changed under the instruction of the Threads helpdesk as they can adversely affect the operation of your system.
    • Enable Verbose logging
      • Log additional information to freepbx.log when the submission task runs
    • Endpoint URL
      • This is provided by Threads, it specifies the endpoint for the encrypted REST data
    • Asterisk spool path
      • This is the location under which the audio files are stored
    • CEL Database Table Name
      • The table names of your CEL table
    • Network Timeout
      • The longest duration in seconds that the REST client will wait for a system response.
    • Call home minutes
      • When there have been no CEL records sent for this period of time, then the system will ping the Threads cloud endpoint to signal that it is alive. This provides status to the Threads helpdesk.
    • Maximum Sender Job Runtime (minutes)
      • If the task that sends records to Threads runs for longer than this period then it will be terminated. No data will be lost, any that were in transit will be resent.
    • Maximum Endpoint Connection Failures Before Alert
      • The number of failed attempts to connect to the Threads REST Endpoint before an error is raised. When the job is enabled a connection is normally attempted every minute.

Context classification

  • The screen is accessed from Settings->Threads Client Contexts
  • Threads uses the context that starts a call to determine whether the call has come from an internal extension or external source.
  • Entries are created by the installer, and then automatically as Threads encounters new contexts that have not been seen before.
    • When new entries are created the following happens
    • an email alert will be sent to the email address set in Threads Client Settings, notifying them that a new context needs to be classified.
    • the calls with that context are held until you edit the classification and set it to a status other than unknown.
  • The classification meanings are as follows:-
    • Unknown – Threads does not know how to handle this context, the calls will be held until you amend the handling to something other than unknown.
    • Ignore – Threads should not do anything with calls originating from this context
    • Internal – Threads should treat a call starting from this context as originating from an internal extension
    • External – Threads should treat a call starting from this context as an inbound call originating from an external caller
    • Sangoma Connect – This call is originating from the Sangoma Connect module and should be handled accordingly

 

Threads Profiles

Overview

A profile is a named entity that holds the settings for call handling within Threads.

Extensions are assigned to profiles, an extension can have only 1 profile.
Queues and External numbers may also be assigned to profiles.

One profile is marked as a default profile, this profile is assigned to new users.

On installation, Threads creates three profiles:-

  • Exclude in Threads
    • This sends the meta data to Threads but Threads will discard the audio.
  • Threads Trial
    • This is a demonstration profile provided as a quick start to evaluate Threads, we recommend that you assign 1 or 2 extensions to this profile whilst you are trialling Threads
    • This profile will
      • Transcribe inbound, outbound and internal calls
      • Not transcribe any call shorter than 5 seconds or longer than 5 minutes
      • Send an email to the email set against the extension user
      • Attach an MP3 file containing the conversation
    • Attach a Microsoft Word file, a text file and a PDF file containing the diarised transcript
  • Send to Threads but do not transcribe
    • This is initially set as the default profile and is assigned to all extensions.
    • This sends the calls to Threads but does not transcribe them, but you may go into the Threads GUI and manually mark any calls that you wish

Creating a profile

Click the “+ Add Profile” button on the profile tab on the profile screen.
The name must be unique and is not case sensitive.

  • Default Profile?
    • If checked then this profile becomes the default profile.
    • The default profile is assigned to all new users
  • ASR Engine
    • Threads supports a number of ASR engines, choose one from the selection that you are licensed to use in your agreement.
    • Different speech engines have differing capabilities, some of the options available below will depend upon the capabilities of the engine chosen
  • Comments
    • These are purely for your own use to hold any pertinent notes

Each of the call directions have a section, inbound outbound and internal, each of these sections have the following settings:-

  • Exclude?
    • If this is selected then calls in this direction will not have their audio stored in Threads, only their meta data, and the rest of the section will be disabled.
  • Automatically Transcribe?
    • This checkbox controls whether calls of this type are automatically transcribed when sent to Threads (even if a call is not automatically transcribed, you can manually request a transcription from the Threads GUI)
  • The following 4 options are only shown if the “Automatically Transcribe” box is ticked
  • Don’t Transcribe if shorter than
    • The minimum length a call must be in order to be considered for automatic transcription or 0 for no minimum duration
  • Units
    • Seconds, minutes or hours for the above
  • Don’t transcribe if longer than
    • The maximum length a call must be in order to be considered for automatic transcription, calls longer than this will not automatically transcribe. Select a high number to transcribe regardless of length 99999
  • Units
    • Seconds, minutes or hours for the above
  • Send to Extension Email?
    • Send an email to the email defined for the extension or, if set, the override in the Profile Member record
  • Custom Email
    • Send an email to these addresses, you may define multiple, in which case separate with “,”
  • If either “Send to Extension Email” is selected, or there is at least 1 address set in “Custom Email” then the following 2 options are shown
  • Attach MP3?
    • If selected, then the audio of the call is attached to the email
  • Attach Word Document?
    • If selected, then a Word document is attached to the email. If “Automatically Transcribe?” is selected then this will contain the transcript, otherwise it will only contain a link to the call in the Threads GUI.
  • Attach Text Document?
    • If selected, then a Text document is attached to the email.
  • Attach PDF Document?
    • If selected, then a PDF file is generated and attached to the email.
  • For Word, PDF and text attachments, if “Automatically Transcribe?” is selected then these documents will contain the transcript, otherwise they will only contain a link to the call in the Threads GUI.
  • If you have selected auto transcribe, and if your selected ASR engine offers additional options, then these will be shown in a section entitled “Advanced ASR Engine Options”
    • The options available will depend on the engine selected.
    • Summarise the conversation?
      • If selected the the transcript will also include a summary of the conversation.
    • Analyse the sentiment of the conversation?
      • If selected the the transcript will also include analysis of the perceived sentiment of the conversation.
    • Generate an action list?
      • If selected the the transcript will also include any actions detected during the conversation.
      • If you have selected to send emails then these will also include clickable calendar files to insert the event in your calendar
    • Automatic Language Detection?
      • Automatically detect if the dominant language of the spoken audio is supported by our API and route it to the appropriate model for transcription.
    • Profanity Filtering?
      • Automatically detect and replace profanity in the transcription text.
    • Filter Filler Words?
      • Optionally include disfluencies in the transcripts of your audio files.
    • Entity Detection?
      • Identify a wide range of entities that are spoken in your audio files, such as person and company names, email addresses, dates, and locations.
    • Topic Detection?
      • Label the topics that are spoken in your audio and video files. The predicted topic labels follow the standardized IAB Taxonomy, which makes them suitable for contextual targeting.
    • Identify Key Phrases?
      • Accurately identify significant words and phrases in your transcription, enabling you to extract the most pertinent concepts or highlights from the conversation.
    • PII Audio Redaction?
      • Identify and remove Personally Identifiable Information, such as phone numbers and social security numbers, from the audio files before they are stored in Threads.
    • PII Redaction?
      • Identify and remove Personally Identifiable Information, such as phone numbers and social security numbers, from the transcription text.
    • Content Moderation?
      • Detect sensitive content in your audio and video files – such as hate speech, violence, sensitive social issues, alcohol, drugs, and more.
    • Auto Chapters?
      • Automatically generate a summary over time.
  • Private?
    • Mark this call as private in Threads

Create Profile Members

  • Extensions
    • These are created automatically for each extension that exists, they will initially be assigned to whichever is the default profile.
  • External Numbers
    • Click on the Add New Member button
    • Select “External Number” as the entity type
    • Enter the number you wish to use in the “Number” field
    • Click “Save Changes”
  • Queues
    • Click on the Add New Member button
    • Select “Queue” as the entity type
    • Enter the number for the queue you wish to use in the “Number” field
    • Click “Save Changes”

Assigning Profiles to Extensions/Queues or Numbers

You can set the profile in one of two ways

  • Select one or more entities on the Profile Members tab and then drop down the required profile and click “Assign to Selected Profile”
  • Edit an individual entity in the Profile Members tab

Editing a profile member

The profile member has two fields

  • Profile
    • This is the profile to use for this entity
  • Email Override
    • This contains an email to be used instead of the email that is set against the extension in User Manager when “Send to Extension Email” is selected in the profile.
    • It allows you to override the email in the event that you wish to use an alternative email to that set against the extension.
    • If you are using queues or external number, then you can set an email to be used for this specific entry.

Deleting a profile

You may select a profile and delete it when it has no members assigned to it.

This is achieved by clicking on the trash can symbol to the right of the entry in the profile list.

Removal

  • The module is removed by selecting “Uninstall” or “Remove” as an action from Admin->Module Admin
    • The database modifications will be retained so you can reinstall the module at a later point and not have to resend all of the previously sent calls.
    • You will lose all of your Threads Client settings and also your Context classifications, these will need to be reconfigured when you reinstall the module

Upgrading

  • We recommend that you allow FreePBX/PBXact to automatically update the Threads module
    • Occasionally a module update may require a database upgrade.
      • If you have enabled Automatic Data Updates in the Threads Client Configuration then this will happen automatically, if not then an email will be sent and call handling will be suspended until you have completed the database upgrade.
    • As the module inserts itself into the dialplan, you should click the “Apply Config” button if this appears in red after a module upgrade.

Troubleshooting

  • The system logs details to the freepbx log, this can be viewed from Reports->Asterisk Logfiles and then selecting “freepbx.log” in the dropdown, you can then filter by Threads (ensure that it appears within the number of lines you have set)
  • If requested, you can generate a diagnostics report from the diagnostics tab, this is detailed below.
  • The threads status screen is accessed from Connectivity->Threads Client Status
    • It consists of 5 tabs, which are detailed below

Status Tab

  • This tab shows the last time various actions were performed, the count of any unknown context classifications and the status of the submission task. If the client is currently unable to connect to the endpoint then the number of unsuccessful attempts will also be listed here.
  • A list of any pending data pushes to the Threads server are also shown, along with the time that they are due (they will only be sent if the Threads job is set to run), they are not sent until they are overdue. If the Threads job is running then they should usually be overdue by no more than two to three minutes, depending on the call volumes on your PBX.

CEL Record Status Tab

  • This screen shows each CEL status and the number of records (not calls) having that status:-
    • Awaiting Send (always shown regardless of whether there are records)
      • The call is in the queue to be sent, no attempts to send it have been made yet.
    • Sent (always shown regardless of whether there are records)
      • The call has been successfully sent to Threads.
    • Failed to send (only shown if calls have this status)
      • After four attempts the call was not sent, it will not be retried.
    • Sent, but with no audio (only shown if records have this status)
      • The call has been successfully sent to Threads, however, there was no audio, there was no recording, or the audio was in the wrong format.
    • Failed to send (without audio) (only shown if calls have this status)
      • After four attempts the call was not sent, it will not be retried. Additionally, there was no audio, there was no recording, or the audio was in the wrong format.
    • Sent with debug (only shown if calls have this status)
      • The call has been successfully sent to Threads. The debug flag was set and the Threads helpdesk will review the call.
    • Failed to send (with debug set) (only shown if calls have this status)
      • After four attempts the call was not sent, it will not be retried. The debug flag was set, however as it was not received, the Threads helpdesk will not be able to review the call.
    • Suspended, context is unknown (only shown if calls have this status)
      • The call cannot be sent yet, the context classification is unknown, the calls will be held until you amend the handling to something other than unknown.
    • Awaiting send, call still in progress (only shown if records have this status)
      • The call is still in progress, it will be queued for sending when it has finished
    • Withheld, set to ignore (only shown if records have this status)
      • The call has not been sent as the context is marked to be ignored in Settings->Threads Client Contexts.
    • Awaiting send, debug and force set (only shown if records have this status)
      • You have marked this call for resend with the debug flag sent, Threads support will review the call when it is received.
    • Awaiting send, force set (only shown if records have this status)
      • You have marked this call for resend, the force flag has been set, these calls will be re-processed in Threads.
    • Withheld, no historic CEL records imported
      • When the database was upgraded, the option to import historic meta-data was not selected and these records have been marked as withheld.
  • The failure entries can be cleared using the “Clear old failure status” on the diagnostics tab.

Diagnostics Tab

  • Threads support may request that you perform diagnostic procedures in the event that you are experiencing difficulties
    • Resend records for a single call and set the debug flag
      • For this you will require the linkedid, this can be found in one of two places:-
        • In the CDR report, Reports->CDR Reports and then locate the call you are interested in, the linkedid appears in the column named “System”
        • In the CEL report, Reports->Call Event Logging, locate the call you are interested in and click “Show” in the details column, the linkedid appears on the details
      • You will be prompted for the linkedid, this will be validated and either the records will be marked for resend or you will see an error if the linkedid cannot be found.
      • Calls marked for resend with debug are prioritised ahead of all other calls, so the submission task can run in single submission mode and if any calls are marked for resend then these will be the first calls attempted.
    • Resend all calls between two date/time ranges
      • You will be prompted for a date/time range, which you may either type or use the date picker to select. All calls between and including those two date/times will be marked for resend to Threads with the force flag set, this call cause Threads to reprocess the calls again.
    • Send profile configuration to Threads
      • This is usually automatically done when a profile is amended or its membership is changed. The Threads helpdesk may request that you perform this
    • Send Contacts configuration to Threads
    • This will only appear if you have set the client to use the FreePBX contacts.
      • This is usually automatically done when you add/edit or delete a contact from an external contact directory (Admin->Contact Manager). The Threads helpdesk may request you to resend your contacts.
    • Send Extensions configuration to Threads
      • Threads uses the extension details to populate the internal caller names, so it is important that you keep these correctly updated.
      • Again, this is usually automatic and performed as required. This allows you to force a send of extension details to Threads
    • Reapply the FreePBX settings
      • This is done as part of the Threads module installation, but the helpdesk may request that you reapply these settings.
    • Send ping to Threads server
      • This lets the server know that your instance is alive, this is usually done automatically when there have been no CEL records sent for some period.
    • Send a test email
      • This send a test email from the email account set in the settings to the recipient account set in the settings.
    • Clear old failure status
      • This will remove any failure entries from the status tab to avoid these cluttering the status screen when they are historic.
    • Display Job List
      • This option will present a table containing all of the scheduled tasks in FreePBX. You may be requested to do this in the event that there are issues with one of the Threads tasks. The items that are specific to Threads will have “Threadsclient” in the “Module” column.
    • Send a diagnostic report
      • This will display a screen where you can select the contents of the report and also the email address to which you would like it sent.
      • These default to all possible data and the Threads support email
      • There is also the option to add an additional piece of text to the subject, support may as you to enter a ticket number here so the diagnostic report is automatically attached to your support ticket
      • Click cancel to abort or click Submit to send the report as an email with the relevant attachments

Installation Tab

  • Update the database schema
    • This is done as part of the Threads module installation. If you have a large number of CEL records we recommend that you do this our of hours. It creates the three new columns (ThreadsStatus, ThreadsMinID and ThreadsComment) and the associated indexes. It also updates the appdata field to be larger (1024 bytes) to ensure that the content does not get truncated.
    • Progress is provided during the database update.
    • Yo9u will receive an email when the upgrade has completed, this will either show the SQL that has been executed, or inform you that no changes were made.
  • Reinstall the context definitions
    • Threads comes with an initial set of context definitions, this allows you to reinstall these. Note that this will not change the current handling for any of these, it will only recreate ones that do not exist.
  • Reinstall the profiles
    • These are created during installation, but if you accidentally delete some or all, then you may reinstall here. Note that this will leave any that currently exist untouched, it only creates those that are missing.

Best Practice Tab

  • This is used to check all of the relevant Threads and FreePBX settings, you can refer to this at any time, links are provided to resolve any issues
  • The links will usually take you to the exact entity and tab that you need to correct
  • For user/extension/route related issues, it will take you to the first user, extension or route with that issue. You can resolve the issue, return to the Best Practice tab and you will now have a link to the next user/extension/route.

Amending the dialplan

  • Threads amends the dialplan for two reasons:-
    • To split the audio into separate channels for speaker diarisation.
    • To augment the voicemail activity so the system knows whether a voicemail was left or not
  • To do this it replaces certain parts of the dialplan, but it does this in a very safe way, it has a list of known parameter matches, it searches the entire dialplan for the entities that it needs to amend (voicemail and mixmon) and amends these, provided that there is an exact match in the table of known parameters.
    • In the event that it does not find a match (for instance, in the case of new code in FreePBX), then that entry in the dialplan is left untouched, an email is sent to the Threads administrator set in the configuration, and the client starts pushing alerts to the Threads helpdesk allowing them to see the versions involved and the new entries required.
    • These will be then added in a new client release.

Writing your own dialplan

  • If you are making additions to the dialplan and use the VoiceMail() or MixMonitor() functions then please read the following section.
  • VoiceMail()
    • When using the voicemail() function, Threads requires that you write a CEL User Event CELGenUserEvent() of THREADSVMLEFT with a value of 1 if a voicemail was left, or 0 if not. This must be done regardless of the way the user exists (so you need hangup handlers etc.)
    • The easiest way to do this is to call the routine subThreadsVoicemail, which accepts the following three arguments:-
      • Extension
      • Context
      • Options
    • These are passed to VoiceMail() as follows:-
      • VoiceMail(${Extension}@${Context},${Options})
    • The routine is called via Gosub() and returns the status in GOSUB_RETVAL
  • MixMonitor()
    • Threads requires that each channel is stored in a separate file, so MixMonitor() calls are augmented as follows:-
      • ,Sr(${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}-in.${MON_FMT})t(${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}-out.${MON_FMT})
  • You can see examples of both of the above in the file extensions_additional.conf which is accessible via Admin->Config Edit

FreePBX 17

  • The Threads module fully supports backup and restore, so your settings will correctly move between systems

FAQs

  • I’ve installed everything, what is the best way forward to evaluate the module?
    • We recommend that to start with you pick one or two extensions, and configure these, so you can get a feel of the capabilities of the system, but not exhaust your initial free transcription credit too soon.
    • Perform the following:-
      • Login to the FreePBX/PBXact admin
      • goto settings->Threads Client Profile Membership
      • search for your extension
      • Edit the extension
      • Change the profile to “Threads Trial”, optionally you may wisah to assign an email if the email assigned to the extension is incorrect and you are unable to amend it.
      • Click submit to save the details
      • This will automatically transcribe all internal, inbound and outbound calls involving this extension, provided that they are between 5 seconds and 5 minutes, an email will be sent and this will include the audio of the call in mp3 format and a word, text and PDF document containing the transcript.
      • You can also view the transcript and scrub through the transcript and audio in the Threads GUI
  • We’ve just entered or exited daylight savings and the times are now wrong in Threads and notifications?
    • Your timezone is set incorrectly in the client, you can amend this in the Threads Client Configuration and Threads will rewrite the timezone on all entries to correct this.
  • I can’t see any of the Threads options in the menus?
    • Ensure that the permissions granted to your particular administrator account allow you access to the 4 Threads options:-
      • Threads Client Configuration
      • Threads Client Contexts
      • Threads Client Profiles
      • Threads Client Status
  • How often do the calls get sent to Threads?
    • The task polls for new calls every minute.
    • For a call to be sent it must not be in the list of calls in progress and must have ended more than 30 seconds previously, this ensures that there are no partial calls sent.
  • How do emails work, who gets what?
    Assume that our extension has the email set to , consider the following table:-
Extension Email Ticked? Custom Email in Profile Custom Email in Membership What emails are sent?
No <empty> <empty> None
Yes <empty> <empty>
Yes <empty>
Yes
No <empty>
Yes <empty>