Skip to main content

DevStack, Messaging

Tutorial Q&A: how to build a full-featured texting app (the easy way)

Bandwidth Bandwidth
keyboard button with Q&A on it

I enjoyed hosting our tutorial, “How to Build a Full-Featured Texting App (the Easy Way).”  During the tutorial, I tried to show ways that texting could be integrated into various apps and walked attendees through an app we built for event communication at Bandwidth called Bandcast.  I know sometimes it’s hard to recall everything after a tutorial (and that sometimes you get pulled into other projects and can’t stay for the questions.)   I thought it would be useful to share what I think are the top questions asked during the tutorial.  Here you go!

Why is node a good choice for a messaging app?

Node is inherently Async and non-blocking (meaning each process is handled as it’s complete; one task can’t hold up the entire framework).  As SMS/MMS are inherently async communications, Node can scale out with incredible ease to handle messages.

How do you handle calls?

Calling is a bit more complicated because, unlike messages, voice conversations are by default synchronous. You can really only maintain one voice conversation at once.  Calls also have a bit more states to keep track of (ringing, answered, rejected, voicemail, hang up). A good place to learn more would be in our how-to section of our website.

How do you handle MMS?

MMS is very similar to messages. However the callback event will contain the media URL. You can just attach that to proxied out message as the mediaURL.

Does the Bandcast tool provide delivery confirmations and read receipts?

Yes and No.  Bandwidth’s app platform does not provide read receipts because there is no way to know if a phone has opened a text message.  iMessage and other services like WhatsApp are able to track read status as they own the entire eco system (network, backend server, client).  Bandwidth does provide some form of delivery receipts, but not in the traditional form you might expect.  You are able to see each message with a status of either “waiting” “delivered” or “not delivered.”  What a status of “delivered” indicates is that the message was successfully handed off the to wireless carrier of the recipient.

Are you using express for JavaScript?

I like to use Express (maintained by Strongloop/IBM) when building out backend servers in NodeJS. It seems to be the most popular and has lots of scaffolding tools, plugins, and community built around it. I have seen Koa start to make a dent with the new ECMA 6 standards like generators and ‘yield’.  Happy (maintained by Walmart Labs) is another option, but I don’t have a ton of experience using Happy.

Do you have any new questions now that the tutorial is over? Feel free to ask in the comments and I’ll answer them.