mirror of
https://git.jami.net/savoirfairelinux/jami-daemon.git
synced 2025-08-12 22:09:25 +08:00
sip: modify voicemail notification signal
Change-Id: Ifad1bcc6c6747a448ff3e3d54e8cbfb87dab5be3
This commit is contained in:

committed by
Adrien Béraud

parent
bbbed20f1f
commit
210b7481a0
@ -718,9 +718,19 @@
|
||||
The account ID.
|
||||
</tp:docstring>
|
||||
</arg>
|
||||
<arg type="i" name="count">
|
||||
<arg type="i" name="newCount">
|
||||
<tp:docstring>
|
||||
The number of waiting messages.
|
||||
The number of new messages.
|
||||
</tp:docstring>
|
||||
</arg>
|
||||
<arg type="i" name="oldCount">
|
||||
<tp:docstring>
|
||||
The number of old messages.
|
||||
</tp:docstring>
|
||||
</arg>
|
||||
<arg type="i" name="urgentCount">
|
||||
<tp:docstring>
|
||||
The number of urgent messages.
|
||||
</tp:docstring>
|
||||
</arg>
|
||||
</signal>
|
||||
|
@ -143,7 +143,7 @@ DBusClient::initLibrary(int flags)
|
||||
exportable_callback<CallSignal::TransferFailed>(bind(&DBusCallManager::transferFailed, callM)),
|
||||
exportable_callback<CallSignal::TransferSucceeded>(bind(&DBusCallManager::transferSucceeded, callM)),
|
||||
exportable_callback<CallSignal::RecordPlaybackStopped>(bind(&DBusCallManager::recordPlaybackStopped, callM, _1)),
|
||||
exportable_callback<CallSignal::VoiceMailNotify>(bind(&DBusCallManager::voiceMailNotify, callM, _1, _2)),
|
||||
exportable_callback<CallSignal::VoiceMailNotify>(bind(&DBusCallManager::voiceMailNotify, callM, _1, _2, _3, _4)),
|
||||
exportable_callback<CallSignal::IncomingMessage>(bind(&DBusCallManager::incomingMessage, callM, _1, _2, _3)),
|
||||
exportable_callback<CallSignal::IncomingCall>(bind(&DBusCallManager::incomingCall, callM, _1, _2, _3)),
|
||||
exportable_callback<CallSignal::RecordPlaybackFilepath>(bind(&DBusCallManager::recordPlaybackFilepath, callM, _1, _2)),
|
||||
|
@ -32,7 +32,7 @@ public:
|
||||
virtual void transferFailed(void){}
|
||||
virtual void transferSucceeded(void){}
|
||||
virtual void recordPlaybackStopped(const std::string& path){}
|
||||
virtual void voiceMailNotify(const std::string& call_id, int nd_msg){}
|
||||
virtual void voiceMailNotify(const std::string& accountId, int newCount, int oldCount, int urgentCount){}
|
||||
virtual void incomingMessage(const std::string& id, const std::string& from, const std::map<std::string, std::string>& messages){}
|
||||
virtual void incomingCall(const std::string& account_id, const std::string& call_id, const std::string& from){}
|
||||
virtual void recordPlaybackFilepath(const std::string& id, const std::string& filename){}
|
||||
@ -118,7 +118,7 @@ public:
|
||||
virtual void transferFailed(void){}
|
||||
virtual void transferSucceeded(void){}
|
||||
virtual void recordPlaybackStopped(const std::string& path){}
|
||||
virtual void voiceMailNotify(const std::string& call_id, int nd_msg){}
|
||||
virtual void voiceMailNotify(const std::string& accountId, int newCount, int oldCount, int urgentCount){}
|
||||
virtual void incomingMessage(const std::string& id, const std::string& from, const std::map<std::string, std::string>& messages){}
|
||||
virtual void incomingCall(const std::string& account_id, const std::string& call_id, const std::string& from){}
|
||||
virtual void recordPlaybackFilepath(const std::string& id, const std::string& filename){}
|
||||
|
@ -227,7 +227,7 @@ void init(ConfigurationCallback* confM, Callback* callM, PresenceCallback* presM
|
||||
exportable_callback<CallSignal::TransferFailed>(bind(&Callback::transferFailed, callM)),
|
||||
exportable_callback<CallSignal::TransferSucceeded>(bind(&Callback::transferSucceeded, callM)),
|
||||
exportable_callback<CallSignal::RecordPlaybackStopped>(bind(&Callback::recordPlaybackStopped, callM, _1)),
|
||||
exportable_callback<CallSignal::VoiceMailNotify>(bind(&Callback::voiceMailNotify, callM, _1, _2)),
|
||||
exportable_callback<CallSignal::VoiceMailNotify>(bind(&Callback::voiceMailNotify, callM, _1, _2, _3, _4)),
|
||||
exportable_callback<CallSignal::IncomingMessage>(bind(&Callback::incomingMessage, callM, _1, _2, _3)),
|
||||
exportable_callback<CallSignal::IncomingCall>(bind(&Callback::incomingCall, callM, _1, _2, _3)),
|
||||
exportable_callback<CallSignal::RecordPlaybackFilepath>(bind(&Callback::recordPlaybackFilepath, callM, _1, _2)),
|
||||
|
@ -32,7 +32,7 @@ public:
|
||||
virtual void transferFailed(void){}
|
||||
virtual void transferSucceeded(void){}
|
||||
virtual void recordPlaybackStopped(const std::string& path){}
|
||||
virtual void voiceMailNotify(const std::string& call_id, int nd_msg){}
|
||||
virtual void voiceMailNotify(const std::string& accountId, int newCount, int oldCount, int urgentCount){}
|
||||
virtual void incomingMessage(const std::string& id, const std::string& from, const std::map<std::string, std::string>& messages){}
|
||||
virtual void incomingCall(const std::string& account_id, const std::string& call_id, const std::string& from){}
|
||||
virtual void recordPlaybackFilepath(const std::string& id, const std::string& filename){}
|
||||
@ -118,7 +118,7 @@ public:
|
||||
virtual void transferFailed(void){}
|
||||
virtual void transferSucceeded(void){}
|
||||
virtual void recordPlaybackStopped(const std::string& path){}
|
||||
virtual void voiceMailNotify(const std::string& call_id, int nd_msg){}
|
||||
virtual void voiceMailNotify(const std::string& accountId, int newCount, int oldCount, int urgentCount){}
|
||||
virtual void incomingMessage(const std::string& id, const std::string& from, const std::map<std::string, std::string>& messages){}
|
||||
virtual void incomingCall(const std::string& account_id, const std::string& call_id, const std::string& from){}
|
||||
virtual void recordPlaybackFilepath(const std::string& id, const std::string& filename){}
|
||||
|
@ -134,6 +134,7 @@ void init(const v8::Handle<v8::Value> &funcMap){
|
||||
const std::map<std::string, SharedCallback> callEvHandlers = {
|
||||
exportable_callback<CallSignal::StateChange>(bind(&callStateChanged, _1, _2, _3)),
|
||||
exportable_callback<CallSignal::IncomingMessage>(bind(&incomingMessage, _1, _2, _3)),
|
||||
exportable_callback<CallSignal::VoiceMailNotify>(bind(&voiceMailNotify, _1, _2, _3, _4)),
|
||||
exportable_callback<CallSignal::IncomingCall>(bind(&incomingCall, _1, _2, _3)),
|
||||
exportable_callback<CallSignal::NewCallCreated>(bind(&newCallCreated, _1, _2, _3))
|
||||
};
|
||||
|
@ -123,7 +123,7 @@ struct DRING_PUBLIC CallSignal {
|
||||
};
|
||||
struct DRING_PUBLIC VoiceMailNotify {
|
||||
constexpr static const char* name = "VoiceMailNotify";
|
||||
using cb_type = void(const std::string&, int32_t);
|
||||
using cb_type = void(const std::string&, int32_t, int32_t, int32_t);
|
||||
};
|
||||
struct DRING_PUBLIC IncomingMessage {
|
||||
constexpr static const char* name = "IncomingMessage";
|
||||
|
@ -2115,14 +2115,6 @@ Manager::callFailure(Call& call)
|
||||
removeAudio(call);
|
||||
}
|
||||
|
||||
//THREAD=VoIP
|
||||
void
|
||||
Manager::startVoiceMessageNotification(const std::string& accountId,
|
||||
int nb_msg)
|
||||
{
|
||||
emitSignal<DRing::CallSignal::VoiceMailNotify>(accountId, nb_msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Multi Thread
|
||||
*/
|
||||
|
@ -375,13 +375,6 @@ class Manager {
|
||||
const std::map<std::string, std::string>& messages,
|
||||
const std::string& from, bool isMixed);
|
||||
|
||||
/**
|
||||
* Notify the client he has voice mails
|
||||
* @param accountId The account identifier
|
||||
* @param nb_msg The number of messages
|
||||
*/
|
||||
void startVoiceMessageNotification(const std::string& accountId, int nb_msg);
|
||||
|
||||
/**
|
||||
* ConfigurationManager - Send registration request
|
||||
* @param accountId The account to register/unregister
|
||||
|
@ -223,11 +223,23 @@ transaction_request_cb(pjsip_rx_data *rdata)
|
||||
|
||||
if (request.find("NOTIFY") != std::string::npos) {
|
||||
if (body and body->data) {
|
||||
int voicemail = 0;
|
||||
int ret = sscanf((const char*) body->data, "Voice-Message: %d/", &voicemail);
|
||||
int newCount { 0 };
|
||||
int oldCount { 0 };
|
||||
int urgentCount { 0 };
|
||||
|
||||
if (ret == 1 and voicemail != 0)
|
||||
Manager::instance().startVoiceMessageNotification(account_id, voicemail);
|
||||
std::string sp = std::string(static_cast<char*>(body->data));
|
||||
auto pos = sp.find("Voice-Message: ");
|
||||
sp = sp.substr(pos);
|
||||
|
||||
int ret = sscanf(sp.c_str() , "Voice-Message: %d/%d (%d/",
|
||||
&newCount,
|
||||
&oldCount,
|
||||
&urgentCount);
|
||||
|
||||
// According to rfc3842
|
||||
// urgent messages are optional
|
||||
if (ret >= 2)
|
||||
emitSignal<DRing::CallSignal::VoiceMailNotify>(account_id, newCount, oldCount, urgentCount);
|
||||
}
|
||||
} else if (request.find("MESSAGE") != std::string::npos) {
|
||||
// Reply 200 immediately (RFC 3428, ch. 7)
|
||||
|
Reference in New Issue
Block a user