diff --git a/src/call.cpp b/src/call.cpp
index e836ad38204b25f699b559cea9bacc8881f847e5..cf28648efefb01903dc275556378c880115a9143 100644
--- a/src/call.cpp
+++ b/src/call.cpp
@@ -366,7 +366,7 @@ Call::~Call()
 Call* CallPrivate::buildExistingCall(const QString& callId)
 {
    CallManagerInterface& callManager = DBus::CallManager::instance();
-   MapStringString       details     = callManager.getCallDetails(callId);
+   MapStringString       details     = getCallDetailsCommon(callId);
 
    //Too noisy
    //qDebug() << "Constructing existing call with details : " << details;
@@ -424,11 +424,41 @@ Call* CallPrivate::buildDialingCall(const QString & peerName, Account* account)
    return call;
 }
 
+MapStringString CallPrivate::getCallDetailsCommon(const QString& callId)
+{
+
+   CallManagerInterface& callManager = DBus::CallManager::instance();
+
+   MapStringString details = callManager.getCallDetails(callId);
+
+   const QString account = details[ CallPrivate::DetailsMapFields::ACCOUNT_ID ];
+
+   if (account.isEmpty())
+      return details;
+
+   Account* acc = AccountModel::instance()->getById(account.toLatin1());
+
+   //Only keep the useful part of the URI
+   if (acc && acc->protocol() == Account::Protocol::RING)
+      details[DetailsMapFields::PEER_NUMBER] = URI(details[DetailsMapFields::PEER_NUMBER]).format(
+         URI::Section::SCHEME    |
+         URI::Section::USER_INFO
+      );
+   else
+      details[DetailsMapFields::PEER_NUMBER] = URI(details[DetailsMapFields::PEER_NUMBER]).format(
+         URI::Section::SCHEME    |
+         URI::Section::USER_INFO |
+         URI::Section::HOSTNAME
+      );
+
+   return details;
+}
+
 ///Build a call from a dbus event
 Call* CallPrivate::buildIncomingCall(const QString& callId)
 {
    CallManagerInterface& callManager = DBus::CallManager::instance();
-   MapStringString details = callManager.getCallDetails(callId);
+   MapStringString details = getCallDetailsCommon(callId);
 
    const QString from          = details[ CallPrivate::DetailsMapFields::PEER_NUMBER ];
    const QString account       = details[ CallPrivate::DetailsMapFields::ACCOUNT_ID  ];
@@ -460,8 +490,7 @@ Call* CallPrivate::buildIncomingCall(const QString& callId)
 ///Build a ringing call (from dbus)
 Call* CallPrivate::buildRingingCall(const QString & callId)
 {
-   CallManagerInterface& callManager = DBus::CallManager::instance();
-   MapStringString details = callManager.getCallDetails(callId);
+   MapStringString details = getCallDetailsCommon(callId);
 
    const QString from          = details[ CallPrivate::DetailsMapFields::PEER_NUMBER ];
    const QString account       = details[ CallPrivate::DetailsMapFields::ACCOUNT_ID  ];
@@ -1169,8 +1198,7 @@ Call::State CallPrivate::stateChanged(const QString& newStateName)
          return m_CurrentState;
       }
 
-      CallManagerInterface & callManager = DBus::CallManager::instance();
-      MapStringString details = callManager.getCallDetails(m_DringId);
+      MapStringString details = getCallDetailsCommon(m_DringId);
       if (details[CallPrivate::DetailsMapFields::PEER_NAME] != m_PeerName)
          m_PeerName = details[CallPrivate::DetailsMapFields::PEER_NAME];
 
diff --git a/src/private/call_p.h b/src/private/call_p.h
index 19d5b73254260e4142e395523f1a0df434850da1..13c13d934aecf871f92737a11a25d19771f414e0 100644
--- a/src/private/call_p.h
+++ b/src/private/call_p.h
@@ -241,6 +241,7 @@ public:
    void registerRenderer(Video::Renderer* renderer);
    void removeRenderer(Video::Renderer* renderer);
    void setRecordingPath(const QString& path);
+   static MapStringString getCallDetailsCommon(const QString& callId);
    template<typename T>
    T* mediaFactory(Media::Media::Direction dir);