SIGNAL Behind the Scenes: Twilio's Andres Jaan Tack

August 29, 2019
Written by
Twilio
Twilion

andres.jpg

In this interview, Twilio's Andres Jaan Tack sits down with Corey Weathers to talk about Twilio's launch of Conversations. We hope you enjoy this interview transcript.

The following interview took place August 6th, 2019 at Twilio's SIGNAL conference at Moscone West in San Francisco, California. It previously aired on our SIGNAL TV broadcast over on Twitch.tv/Twilio.

You can also find this interview on Youtube on Twilio's channel.

Meet Andres Jaan Tack

Corey: Hey, what's up, friends? Super excited to be back with you. Listen, welcome back to SIGNAL TV. It's your boy Corey Hurricane Weathers back here in the building. We're hanging out with Twilions again. We've been having some fun throughout the day. We've got more live interviews, more live demos set up for you. And so before I continue I gotta say "welcome" to the latest guest. This is Andres. Hi Andres good to see you.

Andres: Hi Corey how are you doing?

Corey: I'm good how about you?

Andres: I'm doing well, doing well it's been a good day.

Corey: Has it been a good SIGNAL for you?

Andres: It's been a really good one. It was really great to be up on stage and actually launch this product. We've been working on it for an awfully long time.

Corey: Which is super exciting. We're here talking about Conversations today right?

Andres: Yep that's the one.

Andres introduces Twilio Conversations

Corey: Hey we saw it here in the chatroom. We had a ton of fun, and everyone was getting super excited about the possibility. Is there something special about Conversations that stands out to you?

Andres: I think Jeff really nailed it which is that the fact that we know that replies to text messages, replies to WhatsApp outbounds are getting dropped right now. This is a massive missed opportunity for our customers to engage with clients. Because when the clients actually respond to a message, that's gold.

Corey: Yeah.

Andres: This is often, this is the client actually expressing, "I am already interested in what you have said," or "I'm interested in engaging with your company. Help me do that."

Corey: Well, and I gotta tell you it was the demo that was most compelling to me. I had a ton of fun watching the madness happen as Ricky was up there kicking off shoes and dropping down bags. And John was out there trying to moderate and referee and do a number of things. So shout out to you all for putting together such an amazing demo.

Andres: Yeah we had a lot of fun putting that together. The point of that chaos on stage was to kind of show, and it got ridiculous of course at the end, how many people actually can be involved, how many employees you have that could be actually agents of your brand, really represent you to your customers and make a better experience.

Corey: It makes a ton of sense. And so I think it would be good if we jumped into a demo. Are you ready to jump into a demo of Conversations?

Andres: I think I can do that.

Corey: Now listen as you're doing that I'm gonna take a look here at the chatroom, it looks like- Oh yeah someone's asked, "Are we getting another demo?" Yes we are, we're doing it right now. We're gonna have a ton of fun. Thank you all for hanging out with with us. If you've got questions or things around the demo that you wanna see, you wanna hear just drop a note in the chatroom, we'll follow up with you when we can. That cool? Sweet let's jump into it.

Andres: Great let's get into it then. So I love the Twilio CLI. I think it's a great tool especially for this kind of situation.

Corey: Oh yeah, Twilio CLI. We love the CLI here as well.

Andres: And the best feature of the Twilio CLI, auto create.

Corey: Auto Complete. Yeah boy.

Andres: So creating Conversation, this is super straight forward you get a siv, like anything else. What I'm gonna go ahead and do is play with WhatsApp, which is one of the major channels that we support. And Chat, which is the other, probably the most relevant for the brands.

Corey: Yeah.

Andres: When they communicate with customers, it's gonna be Chat. So that's two participants that I'm gonna add here.

Corey: Okay.

Andres: Twilio, API Conversations. Gonna create a Chat participant. Over there, that's identity, Tack, we'll call him.

Corey: Cool.

Andres: Actually lets use a different name. Tackleton.

Corey: Tackleton!

Andres: Tackleton, that's a good one. That'll also make it easier to find because I've been using this demo instance quite a bit.

Corey: Oh yeah.

Andres: Yeah, so the other one this is where we're gonna add WhatsApp. Same conversation as before, but we're actually gonna bind someone on the Twilio messaging platform. So we call that a messaging binding. Gonna use my WhatsApp address here, which will make it easy for me to show you. a conversation.

Andres: Oh cool. We're also gonna bind a proxy address that I have set up. This is a Twilio phone number that I bought and I upgraded to support WhatsApp in the platform.

Corey: Oh my goodness. So wait so we've got one person coming in through Chat. We've got a second person coming in through WhatsApp, using a Twilio phone number that's now been bumped up to be able to work in WhatsApp.

Andres: Yep, yep, yep there's a whole approval process that we take you through. If you have the identity you should use it, because WhatsApp is a tremendous channel.

Corey: That's awesome.

Andres: Great so we're gonna set that up. Got two members of this Conversation. If I go ahead and break out my Chat UI. I will log in as that, as that user I mentioned, Tackleton and there's that conversation that I created. Here's WhatsApp on the other side.

Corey: Yeah I see WhatsApp on the right. Now this Chat UI, is this a local project you're running?

Andres: This Chat UI, yeah it's actually based on the Quickstart code that we published on the internet. So if you go to doc/conversations you'll get a version of this.

Corey: Okay.

Andres: I think this UI is a little bit nicer, so we'll probably upgrade it for this.

Corey: So that's super exciting. twilio.com/docs/conversations. You can go grab a Quickstart there friends. You can get started and see something super similar to help you engage with Conversations, in addition to, we talked about this earlier, so I'm gonna bring it back up npm install-g TwilioCLI. Twilio-CLI. That's how you get the CLI going on your machine right?

Andres: Oh absolutely.

Corey: So yeah okay cool, so we're back in our conversation.

Andres: Yep, yep this whole thing by the way based on the Twilio Programmable Chat SDK is completely unmodified. So I built this on an airplane trip at one point. You can build your own and customize it completely. But lets say I'm gonna be a customer of this personal shopping studio. "Hey I need some style."

Corey: Coming in through WhatsApp.

Andres: "Can you help me out?" Write a WhatsApp message, that's going to land over here in Chat. There it is.

Corey: Oh look at that.

Andres: Automatically populating. You notice all I did was manipulate the REST API here. I declared who was talking with who, didn't set up any

Corey: And that's it. didn't set up any servers. You can, especially if you wanna manipulate webhooks or do bots or anything like that, it's not necessary. To really set up the basics, REST API is all you need.

Corey: This is super interesting. Let me ask you a quick question, it's just come in through the chat window. How much do we know about this specific question? Is WhatsApp still in beta? Do you know?

Andres: WhatsApp is still in beta.

Corey: WhatsApp is still in beta as of today. Now do we have any ideas, This is like a sensitive question, friends.

Andres: You can ask the hard questions.

Corey: I'm gonna ask the hard questions. It's a super sensitive question. We have to ask it. I think I know what the answer is, but I'm gonna see if Andres is gonna tell us. Do we have any idea when that beta tag is gonna come off of WhatsApp?

Andres: I'm awfully sorry I don't have any idea that I can tell you.

Corey: Okay, friends so we can't give you anything just yet. Keep the questions coming. Keep asking us, keep us honest so we can keep asking for you. Let's hop back into our demo.

Andres: Let's hop back in. So need some style tips, can you help me out here? I'm the owner of this personal shopping atelier, I'm gonna say, "Yep, absolutely." And since we're programmers here we're not gonna make it super complicated. "Pants or shirt?" Right and guy's on the other side is gonna say, "I need pants." Make it super clear. So this is cool actually. We've been routing these messages, text based automatically back and forth. You can tell what type they are and that's what I'm using.

Corey: Oh that is so cool.

Andres: Yep, yep. But he needs pants. At this point I can start describing the pants, but that really isn't gonna take me all the way. I think it's gonna be much better if I actually give them a picture of the pants I have in my inventory. So we're gonna pop that in there.

Corey: Wait so this thing supports pictures as well?

Andres: Yep. Media and text flow both, back and forth across

Corey: Oh my goodness.

Andres: And we support WhatsApp for this, we support MMS. SMS is obviously text only MMS.

Corey: But this is amazing. I mean we're literally talking- and I love that we've got things like some of the context around when the message came. And obviously we have the date and the time. Obviously this is all based on chat so we have things around conversation history that go back right?

Andres: Yeah exactly, you can also examine that history in the REST API. If you look at the API conversations messages and list those out.

Corey: Oh my goodness. Watch the madness friends, here it comes.

Andres: All of those messages are up there.

Corey: Wow!

Andres: Are in the sources there, the body you can see if you output in JSON.

Corey: Oh my goodness.

Andres: Everything is here.

Corey: Look at how easy it is to see this information friends.

Andres: Yeah programmatically accessible. It has to be, because that's how you build the best experience.

Corey: I love that the CLI makes this super simple and yet at the same time, like I can continue to come back to my app and do the things that I wanna do inside of my app.

Andres: Yep, yep, once you put it up, the CLI is really a super useful tool for prototyping.

Corey: Absolutely.

Andres: It helps you cover that gap while you're still figuring out the experience that you want to create and experiment with things. You can test things out without actually building the experience up front.

Corey: Well we did get a question in the chat that asks, "Does conversations support GIFs?" I think the answer is yes?

Andres: Yep I'd have to look at the website to remind. But definitely JPEGs, we support GIFs, we support MP4s, I believe that we support. I'd have to check. There's a forth and a fifth and I can never remember what they are.

Corey: And of course folks are now starting to go down the rabbit hole so I will ask one more. What about ASCII art? You know we love ASCII art. We developers, we're a little crazy. Does Conversations support ASCII art? Or specifically does CLI support ASCII art? Do you know?

Andres: Does the CLI support ASCII art? Well ASCII art is text so I would have to say yes.

Corey: We would hope so. Hey friends, keep the questions coming. We're having a good time. I'm gonna take a sip while Andres continues.

Andres: Great, well so this is the fullness of the demo that I was gonna show. I can show you maybe one more thing, which is that I mentioned there's a system of webhooks in the back to handle this. And this probably follows well from the key note that we showed before.

Corey: Okay.

Andres: If we go to the console and look at the way this interacts with SMS messaging services. And actually it's gonna make me log in.

Corey: Now messaging services, for our friends who are not Twilio users, not as familiar with messaging services, what is it? How would you describe it?

Andres: Sure, messaging services are a tool for controlling, for providing features on top of messaging. If you look at the list of things that we do here, this gets into interesting things. Suppose you add someone on MMS to this conversation that we just had, its gonna work out fine because MMS supports images. All routes back and forth perfectly just the same way. If on the other hand they're in Europe at the time. Europe doesn't have great support for MMS. So depending on which country they are whether we do it or not we might have to fall back. And this is one of the things that you can control in these messaging services.

Corey: Oh that's cool.

Andres: Yeah so MMS converter is what that particular feature describes. So this is a function on messages that are going in and particularly going out of the Twilio messaging ecosystem. That's what messaging services are for. Now what we've done as part of the release of Twilio Conversations is we've changed the way that you set your inbound settings. The way that it used to be able to do, you could set a webhook this way. The other thing that you can do, you can auto create conversations from here.

Corey: Oh my goodness!

Andres: So any message that comes in to any of the numbers that are configured on these messaging services automatically creates a Conversation. You can capture webhooks off the back of that. And that actually creates a

Corey: A two sided conversation.

Andres: A two sided conversation.

Corey: That's amazing!

Andres: Exactly and you can handle all those webhooks over here at the Conversations console that we now have released along with this.

Corey: This is available in Twilio.com/console. Folks log in to their accounts they'll see this today.

Andres: Absolutely.

Andres: Cool. All ready today. and here you can set- we have POST events which is probably what people are familiar. There's a huge library of webhooks, very detailed information about what's happening with the Conversation that you can opt into.

Andres: Interesting. You can capture after the fact. It's what we call a post-webhook or you can intercept and perhaps reject something. For example, if someone tries to join a conversation and you don't want them to be allowed.

Corey: You can intercept it.

Andres: You can intercept it, you can reject it with the http 400 code, whatever you need, and they won't be allowed to join that conversation.

Corey: And so this is a webhook, if we select this event it will then route the incoming conversation to that webhook that we've got set up. We do everything we need to do, we log whatever we need to, and then at the end of it, they get rejected. How simple is this to configure, friends? I mean this is super, super, super easy, to me. I feel like I could just go have some fun with Conversations today.

Andres: Yeah that is the idea. We put a lot of effort into our documentation to get started. Webhooks in particular, scoped webhooks and other features. There's a lot of details, a lot of crannies because we want to make sure that this works for bots. We wanna make sure that it works with automation, that it helps with compliance matters and all of that.

Corey: Now there was a scenario that was brought up in the chatroom around this idea of how you could use the conversation history, the message history, and feed that into a machine learning app. Is that one of the scenarios that you all envisioned when you came up with the idea for Conversations you think?

Andres: Yeah absolutely. I mean this is one of the critical things, it's a general principle and toy. It must be programmatically accessible. And if it isn't accessible in the form of a webhook or some form where it's like after the fact you can collect all this information, run your analytics on it, run your machine learning algorithms on it, it wouldn't be as useful, by far. So this has been a primary goal of ours, is making sure we had this.

Corey: I mean it seems like it makes a lot of sense to me. Right from the scenario of, just from analytics you know. Say I'm in a call center scenario and there's conversations that are happening, we may not be using Flex, we may just be using Conversations. You can then run analytics on the incoming Conversations that are happening just based off of the webhook events.

Andres: Exactly and it's interesting that you brought up Flex. It's one of our goals to make this part of Flex.

Corey: Is that right?

Andres: Yep.

Corey: That is amazing! So Conversations combined with Flex feels like a real nice energy because ideally right, you're talking about multi-channel things. Messaging based things happening through different interfaces, wherever people prefer.

Andres: Exactly. And it's exactly the kind of thing that happens in a contact center, which is that you have a participant, probably the customer if it's an inbound contact, stays in place. But the agents behind it, you start with one, you move on to another. Maybe it's a long running task that takes a couple of days to resolve.

Corey: That's right.

Andres: If they need more help in the middle of the night, you switch to a different agent. So this participant manipulation metaphor, Flex is one of the primary targets of it.

Corey: Oh my goodness, it makes a lot of sense. This is phenomenal.

Andres: But we didn't want to wait for it to be integrated with the Flex to release it because there's all sorts of other use cases. Personal shopping is my favorite because I have these lovely JPEGs that I can send out.

How can people get started with Twilio Conversations?

Corey: Well we love that. I gotta ask the question, we talked about it earlier. We kind of glossed over it a little bit. But I wanna like bring it home, kind of nail the point. How can folks, if they wanna go get started with Conversations today, how can they do that?

Andres: Well the best place to get started is gonna be twilio.com/docs/conversations

Corey: Twilio.com/docs/conversations and look at this, this is beautiful.

Andres: Yeah, we spent a bunch of time on the Quickstart making sure that it's addressable. One of the key things that we did is we used CodeSandbox to actually make this happen.

Corey: Oh really?

Andres: Yeah. So CodeSandbox, this is a live code editor. I'm not super familiar with a whole bunch of them but the idea is that without downloading a GitHub repository,

Corey: Right.

Andres: Setting things up locally, making sure you have the right stuff installed, CodeSandbox has all of that set up for you.

Corey: That's right.

Andres: You can do a lot of this work and get started in the browser.

Corey: That's amazing.

Andres: Yeah I think it really short circuits the experience.

Corey: Yeah I love this. So I would say this seems like an easy way to get started. I do wanna answer a question that came up in the chat, because I wanna make sure that we just hit the point home. It says, "Could we kind of sort messages "by chat ID or something like that?" And I think, and you tell me if I'm wrong, because Conversations is built on top of Chat, there is a structure or a bit of a history in place such that you know when a message came in, chronologically or in what specific order.

Andres: Yep and the ordering is something that Chat has supported for a long time. So this is one of the reasons we really leaned hard on the Chat infrastructure. This stuff scales really well. And it has a lot of these basic features already into it. So I listed the messages that we had already. You notice this parameter in here, "index".

Corey: That's right.

Andres: That starts from zero, it counts to one, it counts to two. This is the way that you totally order messages.

Corey: All of the messages.

Andres: All of the messages unless you know something else. You're always welcome to use the date created. Instead you can use something about the message. We're gonna work to add the flexible JSON attributes here as well. So if there's something about the message, for instance starring a message, that's gonna be the tool to do it. Each individual message can have their own things.

Corey: That is amazing Andres. I gotta tell you I'm super excited. I see this and I do wanna go do some Conversations in TwilioQuest. Is there a mission?

Andres: That's a great question, I'm afraid I didn't check.

Corey: Oh okay good. So we can find out, we'll all go have some fun.

Andres: That sounds like a good quest for us.

Corey: But listen friends we've had Andres now for the last 15 or so minutes. We're gonna let him go. Thanks again Andres for hanging out with us and showing us some more stuff about Conversations.

Andres: Of course, thanks for having me.

Corey: And we'll see you all soon. It's your boy Corey Hurricane Weathers, I'm outta here.

Corey's talk with Andres

Hope you enjoyed the transcipt of Andres and Corey's stream session! You can find more information about Conversations here. Be sure to check out our Twitch and YouTube channel for more great content.

Join 4,000+ of your peers for at SIGNAL 2020 for 2 days filled with 185+ talks. Transform your business and level-up your development skills. At SIGNAL, the world’s best companies join thousands of developers, business leaders, and innovators for learning, networking, and fun. Experience new product releases and in depth sessions led by innovative companies.

Limited time: register now for SIGNAL 2020 for the best pricing