Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

This page was last modified 12:25, 8 November 2007.

Как получить SIP URI входящего звонка VOIP

From Forum Nokia Wiki

Перевод с английского, оригинальная статья находится здесь.


Класс CTelephony не поддерживает VoIP звонки. Поэтому вы не можете использовать NotifyCall и GetCallInfo чтобы определить входящего VoIP звонка и получить номер звонящего. Решением в этой ситуации может служить использование Logengine для получения VoIP SIP URI входящего звонка.

Это демонстрирует следующий пример:

Подключите заголовочные файлы

#include <LogCli.h>
#include <LOGWRAP.H>
#include <LogViewChangeObserver.h>
#include <LOGVIEW.H>
#include <eikenv.h>

Подключите следующие библиотеки

logcli.lib logwrap.lib eikcore.lib
  • 2. Добавьте в предки класса класс MLogViewChangeObserver и реализуйте его виртуальные функции:
    • HandleLogViewChangeEventAddedL
    • HandleLogViewChangeEventChangedL
    • HandleLogViewChangeEventDeletedL
  • 3. Объявите следующие члены класса:
CLogClient* iClient;
CLogEvent* iLogEvent;
CLogViewEvent* iLogViewEvent;
CLogFilter* iLogFilter;
  • 4. В ConstructL() добавьте:
// Создаем объекты LogClient, Logevent, Logfilter, Logviewevent
// используем уже созданную RFs сессию, вместо того, чтобы создать новую
iClient=CLogClient::NewL(CEikonEnv::Static()->FsSession(),CActive::EPriorityHigh); 
iLogEvent=CLogEvent::NewL();
iLogViewEvent = CLogViewEvent::NewL(*iClient,*this);
iLogFilter = CLogFilter::NewL();
 
// Установим фильтр по типу события: звонок
iLogFilter->SetEventType(KLogCallEventTypeUid);
 
//Установим фильтр, исключающий все вызовы,
//кроме пропущенных
TBuf<20> string;
iClient->GetString(string,R_LOG_DIR_MISSED);
iLogFilter->SetDirection(string);
iLogViewEvent->SetFilterL(*iLogFilter,iStatus);
SetActive();
  • 5. HandleLogViewChangeEventAddedL вызывается, когда в лог добавляется событие, удовлетворяющее заданному фильтру.
void CNotifyCall::HandleLogViewChangeEventAddedL(TLogId aId, 
TInt /*aViewIndex*/, TInt /*aChangeIndex*/, TInt /*aTotalChangeCount*/)
{
// Получим событие по его id
// aId содержит Id добавляемого в систему события
 
iLogEvent->SetId(aId);
 
//Получим событие
iClient->GetEvent(*iLogEvent,iStatus);
SetActive();
}
  • 6. В RunL() добавьте следующее:
//В случае обычного телефонного звонка, Number содержит номер звонящего
TBuf<128> callNameBuf=iLogEvent->Number();
CEikonEnv::InfoWinL(_L("Incoming call Number"),callNameBuf);
 
// Remote party содержит voip sip uri звонящего
callNameBuf.Copy(iLogEvent->RemoteParty());
CEikonEnv::InfoWinL(_L("Remote party"),callNameBuf);
Related Discussions
Thread Thread Starter Forum Replies Last Post
Inbound VoIP Call gammav VoIP 4 2008-06-21 18:21
SIP in Python krtrivdi Python 2 2007-08-22 10:21
Is it possible to get a list of access points from the device? nbdr OMA DM/DS/CP 2 2008-04-24 09:15
Nokia sip server (500 internal error) Sandra82 General Symbian C++ 2 2005-01-04 19:00
Provision VoIP settings over-the-air - how? willneale VoIP 8 2008-02-26 10:41
 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX