使用pjsip封装自定义软电话sdk

环境:Windows 10_x64 & Visual Studio 2022
PJSIP版本:2.14.1
Python版本:3.9.13

近期,我们接到了一个在Windows环境下开发软电话SDK的需求,该SDK需要作为一个动态库供上层应用程序调用。今天,我将整理并分享如何使用PJSIP封装一个简单的自定义软电话SDK的笔记,并提供相关资源的下载链接。

本文将从以下几个方面进行详细阐述:

  • 功能概述
  • 接口设计
  • 接口实现
  • 接口调用示例(包括Python和C#)
  • 配套资源下载

关于PJSIP的编译和使用,可以参考这篇文章:

一、功能概述

库名称:sipClient.dll
功能:
在Windows 10环境下,封装PJLIB库以供上层应用使用,实现基于SIP协议的软电话功能。

整体架构如下:

架构图

实现原理:
1. 基于PJSIP封装SDK;
2. 封装基础操作及回调函数;

实现原理图

完整代码可通过以下方式获取:

关注微信公众号“聊聊博文”,并在文末扫码后回复“20241217”获取。

二、接口设计

1. init

功能

初始化接口,用于初始化DLL库。

接口声明

int init(int sock_type, int local_port);

参数

sock_type:socket类型,可设置为
1 => UDP
2 => TCP(后续支持)
3 => TLS(后续支持)

local_port:本地监听端口,设置为0则自动分配端口

返回值

0:成功
-1:失败

2. set_incoming_cb

功能
设置呼入回调函数,用于处理呼入请求。

接口声明

int set_incoming_cb(pCallBack cb);

参数

cb:回调函数,定义如下

int(*pCallBack)(int, int);

返回值

0:成功
-1:失败

3. acc_reg

功能
账号注册操作,将账号信息注册到指定服务器。

接口声明

int acc_reg(char* sip_domain, char* sip_user, char* sip_passwd, char* realm);

参数

sip_domain:注册服务器

sip_user:用户名

sip_passwd:密码

realm:注册域

返回值

account id:成功
-1:失败

4. acc_unreg

功能
账号注销操作,注销指定账号。

接口声明

int acc_unreg(int acc_id);

参数

acc_id:账号id

返回值

call id:成功
-1:失败

5. acc_make_call

功能
外呼操作,使用指定账号进行外呼。

接口声明

int acc_make_call(int acc_id, const char* dst_num);

参数

acc_id:账号id
dst_num:被叫号码

返回值

call id:成功
-1:失败

6. acc_answer_call

功能

接听操作,接听指定呼叫。

接口声明

int acc_answer_call(int call_id);

参数

call_id:需要接听的呼叫id值。

返回值

0:成功
-1:失败

7. acc_hangup_call

功能
挂机操作,挂断指定呼叫。

接口声明

int acc_hangup_call(int call_id);

参数

call_id:需要挂机的呼叫id值。

返回值

0:成功
-1:失败

8. destory

功能
释放PJSUA资源。

接口声明

int destory();

参数

返回值

0:成功
-1:失败

三、接口实现

使用Visual Studio 2022进行DLL封装,配置类型设置为DLL类型。

配置图

1. 编写头文件;

![头文件图](https://

版权声明:程序员胖胖胖虎阿 发表于 2024年12月26日 上午3:50。
转载请注明:使用pjsip封装自定义软电话sdk | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...