16. NS BASIC Tech Note How to Handle Items in the In Box -- February 14,1996 ------------------------------------------------------ Requirements: NS BASIC 3.x and Newton OS 2.0. It's easy to link up the In Box's Put Away feature with NS BASIC. You can have items in the In Box automatically picked up by NS BASIC programs and be processed. This feature can be used for a variety of applications. You could take the incoming data and update it into your files. You could also have your Newton automatically reply to incoming messages: see the Tech note entitled "How to send email from NS BASIC" for more information. Incoming messages could come from a variety of sources. They could be sent as ordinary mail messages through the Internet, or by a specialized email package such as enRoute, from Net Strategy Software. Setting up ----------- You first have to tell the InBox which messages should be sent to NS BASIC, and then tell NS BASIC what to do with these messages. Here's some sample code: 0010 rem register with In Box 0110 regInBoxApp('|basic:nsbasic|,"NSBASIC") 0100 rem set up a putaway function 0110 function putaway(x) :chain("PUTAWAY",x) 0120 LET getroot().|basic:nsbasic|.putaway:=putaway Line 20 lets the In Box know what to do. The regInBoxApp() function takes two arguments: the first is the symbolic name of the NS BASIC application. The second is a string that is checked against the beginning of the Title of the incoming message. If they match, the message is sent to NS BASIC when the Put Away button is tapped. Line 110 sets up the function to handle messages which are to be put away. It uses the same mechanism as other applications which call NS BASIC: the CHAIN function. The first argument is the name of the NS BASIC program to run, and the second is the message itself that got passed from the In Box. The format of the message is a frame, similar in format to the one that get constructed in outgoing messages: see the Tech note entitled "How to send email from NS BASIC" for more information. Line 120 is the trick that makes this all work. We add the putaway function we created into the NS BASIC application itself. It will stay there until the Newton is reset - in which case, you'll need to run this program again. Later revisions of NS BASIC may very well have this function built in, so the putaway function will stick around. To make the above example a bit more sophisticated, you could have the putaway function you define in line 110 use the second word of the Title as the name of the program to CHAIN to. Processing items ---------------- In the above example, line 110 set PUTAWAY as the name of the BASIC program to be run. Here it is: 0010 rem PUTAWAY 0020 print chainParam The message being sent is in the variable chainParam: it's a complete frame with lots of information. Slots you're likely to be interested in include: chainParam.title chainParam.text chainParam.body You can treat this data just like any NS BASIC variable: print it, alter it or write it to a file. For more information, see the Newton Programmer's Guide: Communications, available on http://devworld.apple.com/dev/newton/techinfo.html Chapters 2 and 3 deal with transport communications.