zoukankan      html  css  js  c++  java
  • 开发语音机器人接听功能用到的sip相关知识

    开发接听语音机器人用到的sip相关知识

    1、项目背景

      我们公司最近在开发这样一个业务:买房人给房产经纪人的隐私号码(X号码)打电话,30s内经纪人没有接起,会把用户的电话接入到语音机器人端,语音机器人提醒用户《有什么需要留言的么》,用户留言,然后将用户的相关留言回传给业务方,方便经纪人接听电话。

    2、实现逻辑

      经纪人30s未接起电话,虚拟号码的供应商会给将电话打给我们提供的固话,我们的固话提供商会发送sip信令到我们约定好的机器和端口,从而建立sip连接进行会话。

      其中涉及sip协议的内容包括:怎样监听指定机器端口的sip信令,sip信令怎么将两个电话绑定起来进行通话。

    2.1、sip监听

      java提供一些sip监听的工具类:SipStack、SipProvider、SipFactory、SipListerner

      

     protected void createListenPoint(String listenerName, String serverName, String ip, Integer port)
                throws PeerUnavailableException, InvalidArgumentException, TransportNotSupportedException,
                ObjectInUseException, TooManyListenersException {
            logger.info("init listener{} begin !!!", listenerName);
            this.strListenerName = listenerName;
            // 设置SipStack参数
            Properties properties = new Properties();
            properties.setProperty("javax.sip.STACK_NAME", serverName);
            properties.setProperty("javax.sip.IP_ADDRESS", ip);
            SipFactory sipFactory = SipFactory.getInstance();
            sipFactory.setPathName("gov.nist");
            sipStack = sipFactory.createSipStack(properties);
            ProtocolObjects.init(sipFactory);
            // 创建SipProvider对象
            ListeningPoint udp = sipStack.createListeningPoint(ip, port, ProtocolObjects.transport);
            provider = sipStack.createSipProvider(udp);
            // 设置监听
            provider.addSipListener(this);
            logger.info("init listener{} end !!!", listenerName);
        }
    SipListener是基础接口,ip、端口监听到request信令会把请求包装未RequestEvent事件。
    package javax.sip;
    
    import java.util.EventListener;
    
    public interface SipListener extends EventListener {
        void processRequest(RequestEvent var1);
    
        void processResponse(ResponseEvent var1);
    
        void processTimeout(TimeoutEvent var1);
    
        void processIOException(IOExceptionEvent var1);
    
        void processTransactionTerminated(TransactionTerminatedEvent var1);
    
        void processDialogTerminated(DialogTerminatedEvent var1);
    }
    
    

  • 相关阅读:
    【洛谷 1536】村村通
    【洛谷 1551】亲戚
    【UOJ 300】感冒病毒
    【洛谷 2299】Mzc和体委的争夺战
    【洛谷 3371】模板_单源最短路径(弱化版)
    【洛谷 2910】寻宝之路
    【洛谷 1359】租用游艇
    【UOJ 275】最短路径问题
    【UOJ 38】 股票经济人通信网络
    【UOJ 276】无向图最小环
  • 原文地址:https://www.cnblogs.com/zhangchiblog/p/13822345.html
Copyright © 2011-2022 走看看