Programowalne numery wewnętrzne 3CX - Dostawcy AI

Wprowadzenie

Programowalne numery wewnętrzne 3CX (Programmable Extensions) pozwalają programistom tworzyć agentów AI, którzy obsługują połączenia na żywo przez system telefoniczny 3CX.

3CX Agentic Call Control” to zestaw gotowych przykładów kodu do budowania takich agentów. Każdy przykład łączy programowalny numer wewnętrzny z dostawcą AI działającym w czasie rzeczywistym (takim jak OpenAI, xAI, Gemini lub Qwen) i udostępnia agentowi odpowiednie funkcje kontroli połączeń 3CX.

Ten przewodnik pokaże Ci, jak wybrać dostawcę, skonfigurować wybrany przykład przy użyciu danych uwierzytelniających 3CX i dostawcy, uruchomić go i wykonać połączenie testowe.

Zanim zaczniesz

Pobierz i rozpakuj kod źródłowy „3CX Agentic Call Control”. Wszystkie cztery przykłady znajdują się w tym samym pakiecie.

Wybierz OpenAI, xAI, Google Gemini lub Alibaba Cloud Qwen, a następnie użyj folderu przykładu i wartości konfiguracyjnych dla tego dostawcy.

  • Administrator 3CX z dostępem do „Admin” > „Integrations” > „API”, który może utworzyć „Service Principal”.
  • Zainstalowane środowisko Node.js 20+. Menedżer Yarn 4 jest dołączony do repozytorium.
  • Klucz API z dostępem do usługi w czasie rzeczywistym (realtime) dla wybranego dostawcy AI.
  • Działający numer wewnętrzny 3CX, taki jak Web Client, aplikacja mobilna lub telefon biurkowy, aby wykonać połączenie testowe do agenta AI.

Pobierz przykłady

Po pobraniu kodu źródłowego „3CX Agentic Call Control” przejdź do głównego folderu; zawiera on plik package.json, foldery examples oraz packages.

W folderze examples znajdziesz kod kontroli połączeń specyficzny dla danego dostawcy:

  • examples/openai-realtime
  • examples/xai-realtime
  • examples/gemini-realtime
  • examples/alibaba-qwen-realtime

Wewnątrz każdego z folderów przykładów znajdziesz plik config.yaml.example, który należy skopiować i zmienić nazwę kopii na config.yaml. Pozostaw plik config.yaml.example bez zmian, aby w razie potrzeby móc wrócić do oryginalnych ustawień przykładu.

Plik config.yaml zawiera ustawienia połączenia z centralą PBX oraz parametry dostawcy, które umożliwiają działanie kodu programowalnego numeru wewnętrznego.

Utwórz 3CX Service Principal

W centrali PBX otwórz „Admin” > „Integrations” > „API” i wybierz „Add a Service Principal” (Dodaj Service Principal).

  1. Wprowadź „Client ID”, np.: „assistant”.

Utwórz 3CX Service Principal

  1. Włącz opcję „Enable access to the 3CX Call Control API for this application” (Włącz dostęp do 3CX Call Control API dla tej aplikacji).
  2. Jeśli chcesz, aby agent posiadał funkcje wyszukiwania kontaktów w całym systemie i sprawdzania statusów, musisz również włączyć: „Enable access to the 3CX Configuration API (XAPI) for this application” (Włącz dostęp do 3CX Configuration API (XAPI) dla tej aplikacji). Ustaw dział („department”) i rolę („role”) zgodnie z możliwościami, jakie chcesz nadać agentowi.

Dodaj klucz API

  1. Zapisz klucz API 3CX w bezpiecznym miejscu.

Wybierz dostawcę i skonfiguruj config.yaml

OpenAI

  • W pliku config.yaml wprowadź:
  • appId: Client ID z sekcji Integracje > API > Client ID.
  • appSecret: Klucz API Service Principal z sekcji Integracje > API > Generate API Key.
  • pbxBase: Adres Twojej centrali PBX.
  • openaiApiKey: Klucz API OpenAI z sekcji OpenAI API Keys.

Przykład konfiguracji OpenAI

Zainstaluj zależności i uruchom przykład OpenAI:

yarn install

yarn start:openai

Poprawny log uruchomienia OpenAI zawiera:

openai-realtime starting

   3CX PBX: https://your-pbx.3cx.eu:5001

   OpenAI model: <configured model>

   OpenAI voice: <configured voice>

   Agent profile: receptionist (role: receptionist)

   SDK connected (auth + WebSocket + state)

[MCP] connected to https://your-pbx.3cx.eu:5001/mcp

   MCP tools (1/8):

     ✗ list_peers: List internal numbers of any type (extensions, queues, ring groups, IVRs, etc.). Supports filtering by name, number, or type.

     ✗ get_server_time: Get the current server time in UTC and local timezone.

     ✗ get_edit_url: Get a clickable link to open a DN (extension, queue, ring group, IVR, trunk, etc.) in the management UI editor.

     ✗ find_extension: Find a contact by exact extension number

     ✗ control_participant: Control an active call participant: drop, answer, divert, routeto, or transferto.

     ✗ find_by_email: Find a contact by email address

     ✗ list_crm_contacts: Search for contacts in CRM (Customer Relationship Management) system

     ✓ list_phonebook: Search for contacts in the phonebook by name, number, email, or company

[CallStore] initialized (OpenAI Realtime mode)

All systems ready (OpenAI Realtime mode)

xAI

  • W pliku config.yaml wprowadź:
  • appId: Client ID z sekcji Integracje > API > Client ID.
  • appSecret: Klucz API Service Principal z sekcji Integracje > API > Generate API Key.
  • pbxBase: Adres Twojej centrali PBX.
  • xaiApiKey: Klucz API xAI z console.x.ai.

Przykład konfiguracji xAI

Zainstaluj zależności i uruchom przykład xAI:

yarn install

yarn start:xai

Poprawny log uruchomienia xAI zawiera:

xai-realtime starting

   3CX PBX: https://your-pbx.3cx.eu:5001

   Agent profile: receptionist (role: receptionist)

   xAI Voice: tara

   SDK connected (auth + WebSocket + state)

[MCP] connected to https://your-pbx.3cx.eu:5001/mcp

   MCP tools (1/8):

     ✓ list_phonebook: Search for contacts in the phonebook by name, number, email, or company

     ✗ control_participant: Control an active call participant: drop, answer, divert, routeto, or transferto.

     ✗ list_peers: List internal numbers of any type (extensions, queues, ring groups, IVRs, etc.). Supports filtering by name, number, or type.

     ✗ get_server_time: Get the current server time in UTC and local timezone.

     ✗ find_by_email: Find a contact by email address

     ✗ list_crm_contacts: Search for contacts in CRM (Customer Relationship Management) system

     ✗ get_edit_url: Get a clickable link to open a DN (extension, queue, ring group, IVR, trunk, etc.) in the management UI editor.

     ✗ find_extension: Find a contact by exact extension number

[CallStore] initialized (xAI realtime mode)

All systems ready (xAI realtime mode)

Gemini

  • W pliku config.yaml wprowadź:
  • appId: Client ID z sekcji Integracje > API > Client ID.
  • appSecret: Klucz API Service Principal z sekcji Integracje > API > Generate API Key.
  • pbxBase: Adres Twojej centrali PBX.
  • geminiApiKey: Klucz API Google AI Studio z Google AI Studio.

Przykład konfiguracji Gemini

Zainstaluj zależności i uruchom przykład Gemini:

yarn install

yarn start:gemini

Poprawny log uruchomienia Gemini zawiera:

agentic-call-control starting

   3CX PBX: https://your-pbx.3cx.eu:5001

   Gemini Voice: Kore

   Agent profile: receptionist (role: receptionist)

   SDK connected (auth + WebSocket + state)

[MCP] connected to https://your-pbx.3cx.eu:5001/mcp

     MCP tools (1/8):

     ✓ list_phonebook: Search for contacts in the phonebook by name, number, email, or company

     ✗ control_participant: Control an active call participant: drop, answer, divert, routeto, or transferto.

     ✗ list_peers: List internal numbers of any type (extensions, queues, ring groups, IVRs, etc.). Supports filtering by name, number, or type.

     ✗ get_server_time: Get the current server time in UTC and local timezone.

     ✗ find_by_email: Find a contact by email address

     ✗ list_crm_contacts: Search for contacts in CRM (Customer Relationship Management) system

     ✗ get_edit_url: Get a clickable link to open a DN (extension, queue, ring group, IVR, trunk, etc.) in the management UI editor.

     ✗ find_extension: Find a contact by exact extension number

[CallStore] initialized (Gemini Live mode)

All systems ready (Gemini Live mode)

Qwen

  • W pliku config.yaml wprowadź:
  • appId: Client ID z sekcji Integracje > API > Client ID.
  • appSecret: Klucz API Service Principal z sekcji Integracje > API > Generate API Key.
  • pbxBase: Adres Twojej centrali PBX.
  • dashscopeApiKey: Klucz API Alibaba Cloud DashScope z Alibaba Cloud DashScope API key.
  • dashscopeBaseUrl: Użyj https://dashscope-intl.aliyuncs.com dla klucza międzynarodowego (Singapur) lub https://dashscope.aliyuncs.com dla klucza z Chin kontynentalnych.

Przykład konfiguracji Qwen

Zainstaluj zależności i uruchom przykład Qwen:

yarn install

yarn start:alibaba-qwen

Poprawny log uruchomienia Qwen zawiera:

alibaba-qwen-realtime starting

   3CX PBX: https://your-pbx.3cx.eu:5001

   DashScope: https://dashscope-intl.aliyuncs.com

   Model: qwen3.5-omni-plus-realtime

   Voice: Tina

   Agent profile: receptionist_en (role: receptionist)

   SDK connected (auth + WebSocket + state)

[McpManager] connected to https://your-pbx.3cx.eu:5001/mcp

   MCP tools (1/8):

     ✓ list_phonebook: Search for contacts in the phonebook by name, number, email, or company

     ✗ control_participant: Control an active call participant: drop, answer, divert, routeto, or transferto.

     ✗ list_peers: List internal numbers of any type (extensions, queues, ring groups, IVRs, etc.). Supports filtering by name, number, or type.

     ✗ get_server_time: Get the current server time in UTC and local timezone.

     ✗ find_by_email: Find a contact by email address

     ✗ list_crm_contacts: Search for contacts in CRM (Customer Relationship Management) system

     ✗ get_edit_url: Get a clickable link to open a DN (extension, queue, ring group, IVR, trunk, etc.) in the management UI editor.

     ✗ find_extension: Find a contact by exact extension number

[CallStore] initialized (Qwen Omni realtime)

All systems ready (Qwen realtime mode)

Przetestuj agenta

Użyj testowego numeru wewnętrznego. Do testów przełączania połączeń użyj drugiego, wewnętrznego numeru wewnętrznego. W głównym folderze „3CX Agentic Call Control” uruchom polecenie dla skonfigurowanego dostawcy:

  • OpenAI: yarn start:openai
  • xAI: yarn start:xai
  • Gemini: yarn start:gemini
  • Qwen: yarn start:alibaba-qwen

Poczekaj, aż terminal wyświetli połączenie z PBX i stan gotowości.

  1. Wykręć „Client ID” (appId) swojego Service Principal z testowego numeru wewnętrznego. Na przykład wybierz dosłownie nazwę „assistant”, aby połączyć się z agentem.
  2. Potwierdź, że agent odbiera, odtwarza powitanie i odpowiada Ci.
  3. Przetestuj wyszukiwanie numeru wewnętrznego lub poproś agenta o rozłączenie połączenia za Ciebie.
  4. Sprawdź dane wyjściowe w terminalu pod kątem ewentualnych błędów.

Dostosuj agenta

Użyj pliku config.yaml, aby zmienić powitanie i ustawienia specyficzne dla dostawcy. Aby zmienić domyślne zachowanie, edytuj plik agents/receptionist.yaml lub dodaj inny profil w folderze agents/. Jeśli dodasz niestandardowe serwery MCP (customMcpServers), wymień dokładne nazwy narzędzi w sekcji mcpTools w tym profilu agenta. Zrestartuj agenta po każdej zmianie konfiguracji i wykonaj ponowne połączenie testowe.

Zobacz również


Ostatnia aktualizacja
Ten dokument został ostatnio zaktualizowany 28 sierpnia 2026 r.
https://www.3cx.pl/docs/agentic-call-control-ai-providers/