-
Notifications
You must be signed in to change notification settings - Fork 5
/
index.cpp
113 lines (99 loc) · 2.94 KB
/
index.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include "credentials.hpp"
#include <iostream>
#include <pjsua2.hpp>
using namespace pj;
class MyCall : public Call
{
public:
AudioMediaRecorder recorder;
MyCall(Account &acc, int call_id = PJSUA_INVALID_ID)
: Call(acc, call_id)
{
}
~MyCall()
{
}
virtual void onCallState(OnCallStateParam ¶ms)
{
std::cout << std::endl
<< "onCallState" << std::endl;
CallInfo callInfo = getInfo();
std::cout << std::endl
<< callInfo.stateText << std::endl;
if (callInfo.stateText == "DISCONNCTD")
{
// delete &recorder;
}
}
virtual void onCallMediaState(OnCallMediaStateParam ¶ms)
{
std::cout << std::endl
<< "000" << std::endl;
CallInfo callInfo = getInfo();
for (unsigned i = 0; i < callInfo.media.size(); i++)
{
std::cout << std::endl
<< "111" << std::endl;
if (callInfo.media[i].type == PJMEDIA_TYPE_AUDIO && getMedia(i))
{
std::cout << std::endl
<< "222" << std::endl;
// AudioMedia *audioMedia = (AudioMedia *)getMedia(i);
// recorder.createRecorder("/ringcentral-pjsip/temp.wav");
// audioMedia->startTransmit(recorder);
break;
}
}
}
virtual void onDtmfDigit(OnDtmfDigitParam ¶ms)
{
std::cout << std::endl
<< params.digit << std::endl;
}
};
class MyAccount : public Account
{
public:
virtual void onRegState(OnRegStateParam ¶ms)
{
AccountInfo acountInfo = getInfo();
std::cout << (acountInfo.regIsActive ? "*** Register:" : "*** Unregister:")
<< " code=" << params.code << " reason=" << params.reason
<< std::endl;
// Make outbound call
// Call *call = new MyCall(*this);
// CallOpParam prm(true); // Use default call settings
// call->makeCall("sip:6508888888", prm);
}
virtual void onIncomingCall(OnIncomingCallParam ¶ms)
{
Call *call = new MyCall(*this, params.callId);
CallOpParam callOpParam;
callOpParam.statusCode = PJSIP_SC_OK;
call->answer(callOpParam);
}
};
int main()
{
Endpoint endpoint;
endpoint.libCreate();
EpConfig epConfig;
endpoint.libInit(epConfig);
TransportConfig transportConfig;
transportConfig.port = 5060;
endpoint.transportCreate(PJSIP_TRANSPORT_TLS, transportConfig);
endpoint.libStart();
Endpoint::instance().audDevManager().setNullDev();
AccountConfig accountConfig;
accountConfig.mediaConfig.srtpUse = PJMEDIA_SRTP_MANDATORY;
accountConfig.idUri = "sip:" + userName + "@sip.ringcentral.com";
accountConfig.regConfig.registrarUri = "sip:sip.ringcentral.com";
accountConfig.sipConfig.proxies = {"sip:" + outboundProxy + ";transport=tls"};
accountConfig.sipConfig.authCreds.push_back(
AuthCredInfo("digest", "*", authorizationId, 0, password));
MyAccount *myAccount = new MyAccount;
myAccount->create(accountConfig);
pj_thread_sleep(36000000); // 10 hours
delete myAccount;
return 0;
}