HylaFAX The world's
most advanced open source fax server
|
|
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
Re: [hylafax-users] Problem with inbound routing, still
I am going to check into the code, for right now I am going to modify
our faxrcvd script to grep the NDID out of the actual logfile. Will
report back later what I find from the source.
Regards, Ulf.
---------------------------------------------------------------------
Autotradecenter.com Inc, IT Manager, T: 650-532-6382, F: 650-532-6441
4600 Bohannon Drive, Suite 100, Menlo Park, CA 94025
---------------------------------------------------------------------
> -----Original Message-----
> From: Lee Howard [mailto:faxguy@xxxxxxxxxxxxxxxx]
> Sent: Tuesday, July 13, 2004 13:33
> To: Ulf Zimmermann
> Cc: hylafax-users@xxxxxxxxxxx
> Subject: Re: [hylafax-users] Problem with inbound routing, still
>
> On 2004.07.13 13:07 hylafax-users-bounce@xxxxxxxxxxx wrote:
> > Hello, everyone again.
> >
> > I still have a problem that if the sending side has no caller ID
(NMBR
> > gets set to "<NONE>") faxGettyApp.c++ calls faxrcvd without the NDID
> > in
> > the last parameter field. This is becoming a critical problem for
us,
> > as
> > a client is currently trying to test our call center (sending fax in
> > to
> > sign up, checking for turn around times). Can someone, who knows the
> > code, point me where I need to look (my C++ is unfortunately not
much
> > existing).
>
> In faxd/ClassModem.c++ in the ClassModem::waitForRings function you
> will find this code:
>
> switch (atResponse(rbuf, conf.ringTimeout)) {
> case AT_OTHER: // check distinctive ring
> if (streq(conf.ringData, rbuf))
> type = CALLTYPE_DATA;
> else if (streq(conf.ringFax, rbuf))
> type = CALLTYPE_FAX;
> else if (streq(conf.ringVoice, rbuf))
> type = CALLTYPE_VOICE;
> else {
> if (conf.ringExtended.length() && strneq(rbuf,
> conf.ringExtended, conf.ringExtended.length())) // extended RING
> gotring = true;
> conf.parseCID(rbuf, cid);
> /* DID modems may send DID data in lieu of RING */
> if ((cid.name.length() >= conf.cidNameAnswerLength &&
> conf.cidNameAnswerLength > 0) ||
> (cid.number.length() >= conf.cidNumberAnswerLength
> &&
> conf.cidNumberAnswerLength > 0))
> gotring = true;
> break;
> }
>
> Basically that says that if we're waiting for rings and got a response
> from the modem and it was not a predefined command-response (i.e.,
> "NMBR=<NONE>" is not pre-defined) then we check it against the
> RingData, RingFax, and RingVoice settings, and it it doesn't match
> those, then we check it against the RingExtended setting and then try
> to parse caller-id information from it with the parseCID function.
>
> The parseCID function is found in faxd/ModemConfig.c++ and goes like
> this:
>
> void
> ModemConfig::parseCID(const char* rbuf, CallerID& cid) const
> {
> if (cidName.length() && strneq(rbuf, cidName, cidName.length()))
> cid.name = cid.name | rbuf+cidName.length();
> if (cidNumber.length() && strneq(rbuf, cidNumber,
> cidNumber.length()))
> cid.number = cid.number | rbuf+cidNumber.length();
> }
>
> It's fairly straight-forward. If the first characters of the response
> match the CIDName and/or CIDNumber settings then the remainder of the
> response is assigned to the CIDName and CIDNumber "variables"
> accordingly.
>
> You probably want to add debugging statements to even check to see if
> parseCID is being called when "NMBR=<NONE>" is received from the
modem;
> my guess would be that it is not, and that would be some problem with
> waitForRings, I'd think.
>
> Lee.
____________________ HylaFAX(tm) Users Mailing List _______________________
To subscribe/unsubscribe, click http://lists.hylafax.org/cgi-bin/lsg2.cgi
On UNIX: mail -s unsubscribe hylafax-users-request@xxxxxxxxxxx < /dev/null
*To learn about commercial HylaFAX(tm) support, mail sales@xxxxxxxxx*