Перейти к содержанию

Инструкция по интеграции с АТС

Назначение документа

В документе описана настройка интеграции VK Teams версии 24.11 и выше с АТС.

Документ предназначен для использования системные администраторами.

Шаг 1. Настройте сервис Kamailio

Перейдите в конфигурационный файл сервиса Kamailio /usr/local/etc/k8s/helmwave/projects/sipservices/values/sipservices/kamailio.yml и выполните следующие изменения:

  1. Удалите строку #!define REMOTE_REGISTRATION

  2. Укажите IP-адрес или имя хоста и порт SIP-транка в параметре TRUNK_ADDRESS:

    #!define TRUNK_ADDRESS <IP-адрес или имя хоста >:<порт>
    

    Все исходящие SIP-вызовы из VK Teams будут отправлены на заданный адрес.

  3. В случае кластерной инсталляции, если нода сервиса Kamailio находится за NAT дополнительно:

    3.1. Добавьте новый параметр с указанием белого IP-адреса:

    #!define WHITE_IP 100.70.137.160
    

    3.2. Для внешнего IP-адреса укажите 0.0.0.0:

    #!define EXTERNAL_IP 0.0.0.0
    

    3.3. Проставьте белый IP-адрес как advertise-адрес для внешнего адреса:

    listen=udp:EXTERNAL_IP:EXTERNAL_PORT advertise WHITE_IP:EXTERNAL_PORT
    

    3.4. Удалите проверку внешнего и внутреннего IP-адресов при определении направления трафика:

    sed -i 's/$Ri == $def(\(EXTERNAL_IP\|INTERNAL_IP\)) && //' /usr/local/etc/k8s/helmwave/projects/sipservices/values/sipservices/kamailio.yml
    

    3.5. Замените внешний IP-адрес на белый IP-адрес в выставлении SIP Contact-заголовка:

    sed -i 's/$def(EXTERNAL_IP)/$def(WHITE_IP)/' /usr/local/etc/k8s/helmwave/projects/sipservices/values/sipservices/kamailio.yml
    

Шаг 2. Настройте сервис Sipgate

  1. Скорректируйте конфигурацию для медиатранспорта:

    sed -i 's/ media/ sip.media/' /usr/local/etc/k8s/helmwave/projects/sipservices/values/sipservices/sipgate.yml
    
  2. Перейдите в конфигурационный файл сервиса Sipgate /usr/local/etc/k8s/helmwave/projects/sipservices/values/sipservices/sipgate.yml и укажите для ice- и media-соединений IP-адрес 0.0.0.0:

    ice.media.transport.bind_address 0.0.0.0
    sip.media.transport.bind_address 0.0.0.0
    
  3. Перейдите в конфигурационный файл /usr/local/etc/k8s/helmwave/projects/sipservices/values/sipservices/kanalya-sip-list.yml и укажите порты для внутреннего взаимодействия SIP-сервисов:

    1 sip:[[ $metadata.external_ip -]]:5070
    ...
    1 sip:[[ $.Release.Store.networks.whiteIP -]]:5070
    

Шаг 3. Настройте сервис Numbers

Перейдите в конфигурационный файл сервиса Numbers /usr/local/etc/numbers-1.yaml и выполните следующие изменения:

  1. Поменяйте путь к скрипту для провиженинга:

    provisioning:
      100: "/usr/local/etc/trunk.py"
    
  2. Добавьте секцию integration_profile:

    integration_profile:
      overwrite: true
      value: 100
    
  3. Укажите номер телефона конференции. Все входящие звонки на заданный номер будут направлены для подключения к конференциям:

    conference_numbers:
      default_username: "*"
      use_from_config: true
      list:
        - "88007777777"
    
  4. Сохраните скрипт trunk.py в директорию /usr/local/etc и выдайте пользователю права на его исполнение. Скрипт trunk.py:

    #!/usr/bin/python3
    import argparse
    import json
    import sys
    parser = argparse.ArgumentParser()
    parser.add_argument('--user-sn', type=str, required=True, default='')
    parser.add_argument('--phone-number', type=str, required=True, default='')
    parser.add_argument('--domain-name', type=str, required=True, default='')
    def request_provisioning(args):
    if len(args.phone_number) == 0:
        print("{\"error\":\"phone number is empty\"}")
        sys.exit(2)
    data = {
        "userSN": args.user_sn,
        "phoneNumber": args.phone_number,
        "domainName": args.domain_name,
        "userID": args.phone_number,
        "domain": "-",
        "proxy": "-",
        "authUsername": args.domain_name,
        "authPassword": "-"
    }
    
    print(json.dumps(data))
    if __name__ == '__main__':
    if len(sys.argv) < 7:
        print("{\"error\":\"not enough arguments\"}")
        sys.exit(1)
    args = parser.parse_args()
    request_provisioning(args)
    
  5. Примените настройки командой:

    im_deployer --no-init --skip-check --install -m helmwave --hw-project sipservices
    
  6. Перезапустите сервис Numbers:

    systemctl restart number-1
    systemctl restart tarantool@numbers-1