H323 hangupcause codes

From Kolmisoft Wiki
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;
..........
       }