Conversation
Currently translated at 100.0% (7 of 7 strings) Translation: MIKOPBX/ModuleAutoDialer Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleautodialer/fi/
Currently translated at 100.0% (26 of 26 strings) Translation: MIKOPBX/ModuleAutoDialer Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleautodialer/en/
Currently translated at 100.0% (26 of 26 strings) Translation: MIKOPBX/ModuleAutoDialer Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleautodialer/az/
Currently translated at 100.0% (26 of 26 strings) Translation: MIKOPBX/ModuleAutoDialer Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleautodialer/cs/
Currently translated at 100.0% (26 of 26 strings) Translation: MIKOPBX/ModuleAutoDialer Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleautodialer/da/
Currently translated at 100.0% (26 of 26 strings) Translation: MIKOPBX/ModuleAutoDialer Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleautodialer/de/
Currently translated at 100.0% (26 of 26 strings) Translation: MIKOPBX/ModuleAutoDialer Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleautodialer/el/
Currently translated at 100.0% (26 of 26 strings) Translation: MIKOPBX/ModuleAutoDialer Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleautodialer/es/
Currently translated at 100.0% (26 of 26 strings) Translation: MIKOPBX/ModuleAutoDialer Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleautodialer/fr/
Currently translated at 100.0% (26 of 26 strings) Translation: MIKOPBX/ModuleAutoDialer Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleautodialer/it/
Currently translated at 100.0% (26 of 26 strings) Translation: MIKOPBX/ModuleAutoDialer Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleautodialer/ja/
Currently translated at 100.0% (26 of 26 strings) Translation: MIKOPBX/ModuleAutoDialer Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleautodialer/ka/
Currently translated at 100.0% (26 of 26 strings) Translation: MIKOPBX/ModuleAutoDialer Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleautodialer/nl/
Currently translated at 100.0% (26 of 26 strings) Translation: MIKOPBX/ModuleAutoDialer Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleautodialer/pl/
Currently translated at 100.0% (26 of 26 strings) Translation: MIKOPBX/ModuleAutoDialer Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleautodialer/pt/
Currently translated at 100.0% (26 of 26 strings) Translation: MIKOPBX/ModuleAutoDialer Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleautodialer/pt_BR/
1C sends BOM (\xEF\xBB\xBF) at the start of HTTP request body, causing json_decode to return null. Added getJsonBody() helper that strips BOM before decoding, applied to all POST/PUT endpoints.
1. Dialplan: fire EVENT_FAIL_ORIGINATE AGI when bridgePeer is empty (e.g. call blocked by channel limit in all-outgoing-custom), so the module is notified immediately instead of hanging forever. 2. ConnectorDB: auto-reset TaskResults stuck in CreateCallFile state for over 120 seconds — safety net against any lost AGI/AMI events.
1. Add fallback FAIL result in EVENT_END_CALL handler when no condition matched (e.g. DIALSTATUS != ANSWER and state was not START_DIAL_IN), preventing records from staying open with null result forever. 2. Expand stuck call cleanup to catch any state (not just CreateCallFile) that stays unclosed for over 120 seconds.
Active call states (afterDialOut, startDial, EVENT_POLLING) are no longer reset by timeout — a real call can last longer than 120s. Only CreateCallFile (120s) and endCall (300s) are auto-reset.
Reject tasks with empty innerNum at API level and skip call file creation in WorkerDialer as a safety net.
- Ensure ConnectorDB::invoke() always returns array when unserialize fails, preventing TypeError that disables the module - Skip TTS request when text is empty in RHVoice and Yandex synthesizers
- Add explicit -t wav flag to sox command in RHVoiceSynthesize so sox correctly reads WAV files saved with .raw extension instead of guessing format from extension (caused intermittent beeps/silence) - Validate cached TTS files are >300 bytes (WAV header is ~44 bytes), delete and regenerate corrupt cache entries in both RHVoice and Yandex - Delete broken output files after failed sox conversion to prevent them from being cached permanently
- Add YandexRecognize class for speech-to-text via Yandex SpeechKit API (LPCM format) - Add needRecognize flag and recognizeLabel on playback_record actions - Add confirmation question type (type=confirmation) with STT results playback - Add restart action to repeat survey from beginning with RETRY_COUNTER reset - Add confirm-stt.php AGI script to collect STT results and generate TTS confirmation - Add yandexFolderId setting to module config and web UI - Add Clients.name as NAME parameter in findClientByPhone for polling templates - Fix nextQuestion="0" treated as empty due to PHP falsy check - Update web UI: toggle for needRecognize, recognizeLabel input, confirmation toggle, restart action dropdown
…t question only - Collapse accordion by default, compact timeout/defPress fields (4-wide) - Replace <br> with divider between press sections, bold section headers - Show confirmation toggle only on last question, update on reorder/add/remove - Inline needRecognize toggle with label field, show label only when enabled
- Document Yandex Cloud Folder ID and service account setup - Add needRecognize, recognizeLabel, restart action, confirmation question type - Add polling example with STT and confirmation - Update polling-results response with recognizedText and recognizeLabel fields
… handling - CRM settings: URL, login, password (Basic Auth) on settings tab - New action type "send_crm" for confirmation questions: sends polling results to CRM via POST, speaks back response using TTS template - New AGI agi-bin/send-crm.php for CRM HTTP requests - New REST endpoint POST /crm-test returning timestamp - Fix saveResult.php: fallback to CALLERID(num) when M_OUT_NUMBER empty (fixes polling results not saving for incoming calls routed to polls) - Fix getRecognizedResults: use DTMF result as fallback when STT empty, search by recognizeLabel instead of recognizedText - Add exten => t (timeout) handler for all polling question contexts
Move timeout extension (t) generation with defPress logic into genPolingActionsContexts() to prevent double registration that caused Asterisk warnings: "Unable to register extension 't' priority 1, already in use"
…ransliteration RHVoice could return HTTP 200 with nearly empty WAV (~1600 bytes) for texts containing Latin characters (e.g. car plate "O501ET44"). The file passed the 300-byte cache threshold and was served to all subsequent calls as silence. Changes: - Raise cache validation threshold from 300 to 16000 bytes (1 sec of audio) - Add up to 3 retry attempts on failed TTS generation - Increase HTTP timeout from 3s to 10s for long texts - Transliterate Latin to Cyrillic before sending to RHVoice - Log each failed attempt with file size and text snippet
WorkerAMI's waitUserEvent(true) blocks on fgets() indefinitely — after signal interruption it re-enters the blocking loop via ping(), never checking needRestart. Fix: disconnect AMI in signalHandler to break the blocking read. Also prevent process title overflow (SHUTDOWN_ prepended only once) and add safe.php watchdog to kill -9 any stuck SHUTDOWN processes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.