H323 hangupcause codes

From Kolmisoft Wiki
Revision as of 01:24, 24 May 2010 by Admin (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

This is useful to find why H323 call failed by using h323 debug command in Asterisk CLI.

Data taken from /asterisk/channels/h323/ast_h323.cxx

void MyH323EndPoint::OnConnectionCleared(H323Connection & connection, const PString & clearedCallToken)
{
       PString remoteName = connection.GetRemotePartyName();
       switch (connection.GetCallEndReason()) {
               case H323Connection::EndedByCallForwarded:
                       if (h323debug) {
                               cout << "-- " << remoteName << " has forwarded the call" << endl;
                       }
                       break;
               case H323Connection::EndedByRemoteUser:
                       if (h323debug) {
                               cout << "-- " << remoteName << " has cleared the call" << endl;
                       }
                       break;
               case H323Connection::EndedByCallerAbort:
                       if (h323debug) {
                               cout << "-- " << remoteName << " has stopped calling" << endl;
                       }
                       break;
               case H323Connection::EndedByRefusal:
                       if (h323debug) {
                               cout << "-- " << remoteName << " did not accept your call" << endl;
                       }
                       break;
               case H323Connection::EndedByRemoteBusy:
                       if (h323debug) {
                               cout << "-- " << remoteName << " was busy" << endl;
                       }
                       break;
               case H323Connection::EndedByRemoteCongestion:
                       if (h323debug) {
                               cout << "-- Congested link to " << remoteName << endl;
                       }
                       break;
               case H323Connection::EndedByNoAnswer:
                       if (h323debug) {
                               cout << "-- " << remoteName << " did not answer your call" << endl;
                       }
                       break;
               case H323Connection::EndedByTransportFail:
                       if (h323debug) {
                               cout << "-- Call with " << remoteName << " ended abnormally" << endl;
                       }
                       break;
               case H323Connection::EndedByCapabilityExchange:
                       if (h323debug) {
                               cout << "-- Could not find common codec with " << remoteName << endl;
                       }
                       break;
               case H323Connection::EndedByNoAccept:
                       if (h323debug) {
                               cout << "-- Did not accept incoming call from " << remoteName << endl;
                       }
                       break;
               case H323Connection::EndedByAnswerDenied:
                       if (h323debug) {
                               cout << "-- Refused incoming call from " << remoteName << endl;
                       }
                       break;
               case H323Connection::EndedByNoUser:
                       if (h323debug) {
                               cout << "-- Remote endpoint could not find user: " << remoteName << endl;
                       }
                       break;
               case H323Connection::EndedByNoBandwidth:
                       if (h323debug) {
                               cout << "-- Call to " << remoteName << " aborted, insufficient bandwidth." << endl;
                       }
                       break;
               case H323Connection::EndedByUnreachable:
                       if (h323debug) {
                               cout << "-- " << remoteName << " could not be reached." << endl;
                       }
                       break;
               case H323Connection::EndedByHostOffline:
                       if (h323debug) {
                               cout << "-- " << remoteName << " is not online." << endl;
                       }
                       break;
               case H323Connection::EndedByNoEndPoint:
                       if (h323debug) {
                               cout << "-- No phone running for " << remoteName << endl;
                       }
                       break;
               case H323Connection::EndedByConnectFail:
                       if (h323debug) {
                               cout << "-- Transport error calling " << remoteName << endl;
                       }
                       break;
..........
       }