Ralph Mitchell wrote:
On Wed, Jun 25, 2008 at 7:44 PM, Allan Spencer <allan at zandahar.net <mailto:allan at zandahar.net>> wrote:
HI all A LONG time ago I asked about ack'ing an alert via email (or via sms-to-email) and to be able to do so without a subject. A patch was written at the time and it was included into the main codebase but unfortunately I did not get a chance to imeplement what I wanted to and never ended up testing it. Thats has just changed recently and now I am having issues acking an alert via text in the body. If i reply to an email and maintain the subject it works fine, if I try cut the subject and paste it as the body nothing happens. I havent gone as far as testing it via the sms-to-email app yet as I cant get it working from a normal email.The hobbit-mailack.c program loops through the incoming email, looking for interesting stuff. Here's where it finds the subject line:
else if (strncasecmp(STRBUF(inbuf), "subject:", 8) == 0) subjectline = strdup(skipwhitespace(STRBUF(inbuf)+8));Once the headers are done with, it goes on to look for some things in the email body, such as "delay=" and "ack=":
else if ((strncasecmp(STRBUF(inbuf), "ack=", 4) == 0) || (strncasecmp(STRBUF(inbuf), "ack ", 4) == 0)) { /* Some systems cannot generate asubject. Allow them to ack * via text in the message body. */ subjectline = (char *)malloc(1024); snprintf(subjectline, 1023, "Subject: Hobbit [%s]", STRBUF(inbuf)+4); }
So, does the email body contain a line that starts with "ack=NNNNNN" or "ack NNNNN"?? If not, it won't match the above code fragment. It looks like it should be *just* the number, as that gets filled in between the square brackets in the faked subject line.
I noticed something else interesting in the code. The last thing it does is call sendmessage, handing it a buffer loaded like this:
p += sprintf(p, "hobbitdack %s %d %s", cookie, duration,firsttxtline); if (fromline) { p += sprintf(p, "\nAcked by: %s", fromline); }
I figured it wouldn't hurt to try doing this:
server/bin/bb localhost "hobbitdack NNNNNN 60 this thing is broken Acked by: me at this.domain.com <mailto:me at this.domain.com>"where NNNNNN came from a real, current warning message. Note the placement of the double-quotes - there needs to be a newline between the message and "Acked by". And now, just below the "Status unchanged in...." message at the bottom of the page I find this:
Current acknowledgment: this thing is broken Acked by: me at this.domain.com <mailto:me at this.domain.com> Next update at: 12:54 2008-07-09and there's a nice yellow check mark on the all-non-green page. So it looks like an ACK *can* be sent via the command line...
Ralph
Cheers Ralph you identified my missing link. I was under the impression that the body needed to be in the same format as the subject but as you have identified thats not the case. I have just test a plain email with ack=xxxx in the body and it worked a charm so hopefully a little later on I can try it end to end via SMS.
I knew Henrik coded it in there when I asked a while ago but unfortunately I never got the chance or the capability to test it back then.
Thanks Allan