SIGNAL Behind the Scenes: Twilio's Michael Carpenter

August 30, 2019
Written by
Twilio
Twilion

Michael Carpenter

In this interview, Michael Carpenter from Twilio's Voice Insights team sat down with Corey Weathers, a Developer Evangelist at Twilio to talk about Voice Insights. 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 Michael Carpenter

Corey: What's up, friends. We are back. Okay, so we just had some amazing, amazing, amazing interviews. We had a phenomenal conversation, right, with Andres. Right? From the Product Management Team. Super fun, super exciting. Andres was hanging out. We had Chris earlier. We had some other folks coming and hanging out with us. Now we get to welcome Michael Carpenter from the Voice Insights team. Welcome to the stream, Bud.

Michael: Thanks.

Corey: How you doing today?

Michael: I'm doing great. It's been a great SIGNAL.

Corey: Has it?

Michael: Yeah

Corey: Has there been like, a moment that, like, stood out to you as, like, your best so far?

Michael: So, for this SIGNAL, I think that Jeff's keynote, the way that he sort of tied in the Papa Vic story.

Corey: Yeah.

Michael: I mean, that really, people try to crowbar in resonant stories into keyonotes all the time.

Corey: And I feel like Jeff really delivered the goods. And that was just, like top to bottom totally great. And it really illustrated, in a real world way, the type of thing that we're trying to accomplish at technology scale.

Michael: I mean, it's real. When you hear a story like that that's so compelling. Super authentic. But, like, really, like, it connects in a way that's just superhuman. There's nothing about tech in the sense of, like, "Well, we used technology to solve this problem." More so in the sense of: No, at the end of the day you care about customers.

Corey: Exactly. That's really what we do this for. That's amazing. I gotta tell you, both the chatroom. The chatroom, and Lizzie, my cohost, loved the Papa Vic story. And the chatroom loves your beard.

Michael: Oh, nice.

Corey: Legitimate, the comments are coming in: "Epic beard." "God, that beard." Absolutely love that. So, you've got fans, Bud.

Michael: Awesome. I grew it myself.

Twilio Voice Insights

Corey: So, Twilio's cool, people want to talk about the beard. We'll come back to the beard, friends. We're gonna hop over to Michael's demo because Michael's here to share more about Voice Insights. And before we jump into Voice Insights, the questions is: What are Voice Insights?

Michael: Yeah, sure thing, so Voice Insights is a big data platform that we have at Twilio where we gather about 500 parameters for every single call that happens on the platform.

Corey: 500 parameters?

Michael: Yeah, there's of information. So, it's kind of like the polar opposite of Messages.

Corey: Dear lord.

Michael: Yeah, like Messages the message either shows up or doesn't, right?

Corey: Yeah.

Michael: But with a call, the call can connect to the destination, but there can still be a lot of problems on the call. Or there can be metadata about the call that you're interested in. Like the location of the user who rung up.

Corey: Right.

Michael: All that kind of stuff. So, we gather all of that and we aggregate it and we put it in our customers' hands. Basically, this was our internal support tool back in like 2016. And we used it to solve so many problems, the classic Twilio pattern is: we solve a problem that we think is a big deal and then we put it in our customers' hands so that they can deliver the goods themselves.

Corey: You know, I gotta go back to this number: 500 parameters. I am, like, boggled by that because, I loved the way you described it, right. Which is, well, yeah, with a message you deliver it, it's delivered, right? At the end of the day, you don't care. When you're on a phone call, there are a bunch of things that you have to pay attention to. And I can probably only think of 10.

Michael: Yeah.

Corey: Somehow, someway, you've come up with 500.

Michael: So, not every call has all 500, to be clear.

Corey: There are different complexities of call flows.

Michael: A simple PSTN call is going to have a lot less metadata and a lot less information thank like a Voice SDK call.

Corey: Got it.

Michael: So, we know a lot more information about the Voice SDK because we built the sensors that are in there gathering everything.

Corey: A plain old telephone system call that connects to the PSTN, we still know quite a lot a bit about it, but not 500 things.

Michael: Right. But what's cool about this is is it sounds like, and we'll see it in the demo in a little bit probably. But, it sounds like this is just based off of stuff that we are doing already through Twilio's Programmable Voice SDKs.

Michael: Yeah, yeah, exactly. And then, also, you know, so, we gather all of these information at the SDK, we give you APIs in the SDKs themselves to be able to instrument this stuff. So, for example, we can detect whether or not silence is on a line. You can throw warning in your application that says, "Hey, we're not detecting any audio, we think that maybe, are you on mute?" You know, you can let your user know, "Hey, go to a location with better signal strength because it looks like your network is trashed.

Corey: That's amazing.

Michael: Yeah. So, that way you don't have to wait for the call to be over to do the post-call diagnosis. You can do it in the SDKs themselves. And then once the call is over, then we've got the big data platform.

Corey: And it's generally available.

Michael: Exactly.

Corey: Well that's cool. Can we see a demo?

Michael: Absolutely, I can show it to you.

Corey: All right. So, we're going to bring up your screen. As we're bringing up your screen, I gotta give a quick shoutout. We've got a number of folks who have been following the channel throughout the day. I gotta give a quick shoutout to a couple of our followers. Thank you so much Bathazar. Thank you so much Fickle. GaremChai94, really appreciate that. Scarducious, I love that name. Super super super love that. Also want to hit the chatroom because the chatroom's asked some good questions we're going to answer, hopefully, two of these questions right now. One of them, is this publicly available? Is this a thing where, like, I gotta be behind a thing or know a person or, you know, do a spirit dance to get access to?

Michael: I mean you can do all the dances you want. But it's also publicly available. And it's in GA now.

Corey: Oh, that's amazing.

Michael: Yeah, so, that's one of the reasons that we're talking about it here today. It's been in Beta since about 2016. We've been slowly adding more coverage for different call types. Now we've got all of the call types handled. There's no call that happens on Twilio that we gather Insights data for. And the console experience, the availability of the dashboards, which we'll show you in a second, and the call summaries that's available included with every single Twilio Voice Minute, you don't even have to pay for it.

Corey: Well, and so this was going to be my second question. Which is, is there a flag I need to flip in the console to go see this? Or is this, I just go to the console and this is available under Programmable Voice?

Michael: Yep. This is available for all customers. It's included with every Twilio Voice Minute. Like I mentioned earlier, we use this information to run our business. Super Network uses this, our Operations teams use this, Support uses this. So, we already had this data and it didn't feel right to keep sitting on it.

Corey: Absolutely.

Michael: So, now we're exposing it to customers. There is a feature flag that you can enable to get programmatic access. So, like, the API, and additional level of details. But the basic dashboard and the call summary information that we're going to look at here is included with every Voice Minute placed on Twilio.

Corey: Well this is amazing, I think, and separate of Robertable's recommendation that we do some spirit dances, let's hop into the demo and let's see what all we can do here.

Michael: Yeah, sure thing. So, the first thing that I want to do is to just give a shoutout to our amazing Design team here at Twilio. I think that this is one of the very few tools that we have, and also collapsing side nav mmm, magnifique, I love it.

Corey: Yeah. It's phenomenal.

Michael: You know, our Design team has put together a really easy to use tool that looks great. And it's just such a pleasure to work with. This is how I go and solve problems when customers ask me, "Hey, I think something's going on with my account." I'll go in here and take a look and I'll see if I can find the problem that they're describing. And then I'll send them instructions on how they can identify it themselves.

Corey: Yeah, shoutout to the Design team. That's amazing.

Michael: Yeah. So, basically, what we've got is, we've got a bunch of filters where you can choose the different call types up here on top. So, if you only have carrier calls, only carrier calls will show up. You don't need to deselect them.

Corey: Okay.

Michael: We have a bunch of different timeframes. So, you can certain timeframes deliberately, or just look at, you know, certain comparisons. Right now, we're looking at the last seven days for one of our internal test accounts. And then we have a number of filters that we can apply to this as well. So, for example, if I only want to see calls that went to Latvia. Or if I only want to see calls that ended in a SIP Response of 487 or something like that. You can filter on that.

Corey: Now, wait, let me ask real quick, 'cause some of the folks in the room may not know what a SIP Response is.

Michael: Right.

Corey: What is a SIP Response?

Michael: Yeah. So, the way that we deliver calls to destinations is by using the Session Initiation Protocol-SIP. Sort of a industry standard for setting up media sessions.

Corey: That's right.

Michael: Not just phone calls. Video game sessions, Twitch might even use it. But, basically, it's a lot like HTTP in that, just like you make a Get request you expect a 200 back. In SIP you make an Invite and you expect a 200 back. The 200 means that the call is answered.

Corey: That's amazing.

Michael: Anything other than 200 means something went sideways.

Corey: Is this a thing that folks would see if they were just using the Twilio client SDK, or do they need to do something special to do SIP Requests and responses, it sounds like?

Michael: No, I mean, so, the SDKs do a pretty good job of abstracting that.

Corey: That's right.

Michael: So you can get into it if you want to. And if you're doing SIP Trunking call flows, definitely you're going to be interested in that level of information.

Corey: Got it.

Michael: But for most customers, just placing a call say, from a client app that they want to ring on the PSTN. The SIP information is probably overkill, but if you want to go and find, for example, all of the calls that Twilio doesn't think was a real number? It's just like HTTP. You go search for the SIP Response Code 404. 404 means not found. We couldn't find the number.

Corey: That is amazing.

Michael: We don't think that number exists in the real world.

Corey: That's right. All right, so let's keep going here.

Michael: Cool. So, we have, in addition to those filters, we have this sort of view here of, like, your total calls, your comparison with previous seven days, in this case. I mean, you can do pretty cool stuff here, like, you can zoom and select and it'll pull into that whole.

Corey: That's nice.

Michael: If you've got a specific issue that you want to dig into. And then down here we have a bunch of KPI breakouts. Where, you know, customers are really interested in understanding which calls were busy, what was common between them. Or which calls were failed for whatever reason. And we also have the ability to see calls, in this particular account is lucky no calls have no high Post-dial Delay. Post-dial Delay is when you place a call and you don't hear ringing. So, a lot of time customers will report one-way audio, or even dropped calls. And really what is is we just haven't gotten a ringing signal back from the destination carrier. So, we expose those calls here so you can find them. Network Affected is a pretty great view here because you can see calls where we detect Packet Loss, we detect Jitter, both at the Twilio Gateway and at the SDK level.

Corey: Oh, that's cool.

Michael: So, one cool thing about it is you can compare calls where: what was the experience at the SDK? Like, what did the SDK think was going on? And what did we receive at the Twilio Gateway? And what that does is that allows you to identify the directionality of the problem.

Corey: Yeah, I mean it sounds like it's closing the gap, right?

Michael: Yeah.

Corey: Because for most developers, they're like, "Well, I told Twilio to make the call." And now Twilio can come in and say, "Well, actually, let's tell you what happened next."

Michael: Exactly. Yeah. And then beyond that, we have the ability once you go in and you apply all of these filters. We'll actually just give you the list of calls that match this criteria.

Corey: That's amazing.

Michael: Yeah. And then if we pop over, I found a good example of a call. This is the Insights Call Summary. So, this is, basically, all of the metadata about this particular call. You can see the Twilio SDK version,

Corey: Oh my goodness. the operating systems, all of these cool things. Where the user's located, who hung up. And then we have these two different Edges down here where we gather metrics about the edge. And in this case, we're basically just giving you boolean answers whether or not we detected a problem.

Michael: That's right.

Corey: So, if we detect a problem, we'll fess up to it and we'll say, "Hey, this call had this problem." And we'll also give you the numeric value to show bad it was.

Michael: How bad it was, yeah. So, we won't just say, "We detected a Packet Loss." We'll say, "We detected six percent of a Packet Loss"

Corey: Wow.

Michael: Or something like that.

Corey: This is amazing. Is this, like, powered by machine learning at all behind the scenes? Or are we, like, aggregating data and doing a little bit of.

Michael: It's a hybrid statistical model So, it's machine learn-y. Big data-y.

Corey: Machine learn-y. I love that.

Michael: Yeah, but you know, basically, the idea here is, you know, most of our, most of the people in the telecom industry tell when your call started, when it ended, and how much they charged you for it.

Corey: Which is amazing. I mean from our end, right? Like, I could see where the value is in terms of, and I keep saying this honesty and transparency thing, about this idea of: how do we take that data, we give it to people so that they can then go make informed decisions.

Michael: Exactly.

Corey: As a result of it.

Michael: Yeah, and also, you know, we've had customers, you know, one of the things that we have these tags her where we say a Packet Loss is detected, Jitter detected. We've had customers identify new categories of issues using Insights data.

Corey: Wow.

Michael: That we didn't even know existed.

Corey: That's crazy to me. I mean, it's amazing.

Michael: Yeah, you know, we're really trying to kick open the telecom black box.

Corey: Yeah, yeah.

Michael: So, just to take a little bit of a deeper dive to just show you. Actually, let me jump over here real quick on the Metrics side. So, the Metrics that we're looking at here, this is one of the paid features.

Corey: Look at this.

Michael: So, the dashboard that we saw and the Call Summary, that's included with every single voice call on Twilio. If you enable Voice Insights advanced features, then you get this Metrics and this Events view. So, we have two views over here, the SDK view and the Twilio Gateway view, and we can toggle between them. And when, like we were talking about a second ago, what you can do with this is you can look at what the client thinks happened at the local device and what Twilio thinks happened.

And you can basically identify: Is this due to asymmetric bandwidth allocation at the client's site? Is this due to poor network quality locally? So, a very common thing that we see happening is the steam that arrives at the client SDK itself is fine, but the stream that we receive at the Twilio Edge is a stream of hot garbage.

Corey: Oooh.

Michael: And that's because people have different bandwidth allocations for uplink and downlink. And you get someone who's, say, you know, watching, streaming 4K Netflix at their desk, trying to place sales calls, and they wonder why their calls sound bad. Insights helps you point, basically paint a target on what's going on with that.

Corey: Well, and I love, like, Robertables has just called this out, there are particular carrier pipes that could be causing issues. Location specific things that could be coming up. Or even, like, people meddling with things, right, and so you see things around the government doing things, and in specific places and things of the such and whatnot.

Michael: Yeah, so I mean, in so far as, like, the location information that's make available to you, you can identify: Are there specific locations? A great example that I remember is a customer made a misconfiguration of their SIP infrastructure in a call center in Norway. And if we jump back here to the Total Calls and the Average Length of Call here, the pattern that they saw was their number of calls went through the roof at the same time that their Average Length of Call totally tanked.

Corey: Dropped. Wow.

Michael: Exactly. So, basically, people weren't able to connect so they called back multiple times and it was just literally, like, obvious plain as day on the graph that that's what had been happening.

Corey: I love that this is available.

Michael: Yeah. I'm pretty stoked about it too. Not just because I'm the PM. I think it's a great, great thing. So, just to take another look at the metrics here, so, one of the things that we have is this is sort of the event timeline. This particular call is a Web RTC call. So we've got all of the ice-signaling stuff that's set up. Any issues or errors, you can see them in here. There are a lot of events for this call, so we don't show all of them. You can go into the, you can select them and see what they are.

Corey: Oh, yeah. Oh, look at that.

Michael: You can zoom in, and then in the event list itself, they're all there and they're all laid out by time.

Corey: Look at all, I mean this is amazing. Talk about making things available for people to make informed decisions around how they either want to change things in their code, change things in their Twilio account, continue to contact Support, whether they think they need some additional flags flipped or things of that regards behind the scenes.

Corey: This is super powerful to me.

Michael: Yeah. And, you know, what this allows customers and developers to do, is you can take a look at this Events Stream and you can identify: Is there a pattern of these, like, ice-gathering state Events that starts to happen before customers report quality issues? And you can identify in your own infrastructure maybe what are the things that are contributing to this or, in a lot of cases, there's one particular user who is in some weird behavior and they're throwing your metrics off and that type of thing. So, being able to really hone in with high precision on what exactly is going on with your calls is the whole value proposition of Voice Insights.

Corey: I mean, I love that we make this available and I love that we put this out there for customers to see, to know, to work with, without having to call some one, or to pay for some service contract or some support contract to be able to get this information. I think this is phenomenal.

Michael: Well, let me show you some more, even cooler stuff. So, we actually have not just those Events, but we actually gather the metrics every single second of the call.

Corey: Oh my god.

Michael: So, we have tens of billions of calls, hundreds of billions of minutes. And when we talk about big data that's the big data that we're talking about. And you can see here, this particular call, there was really no Jitter, there was not really Latency. You can see the Audio Level here. Something went wrong here, right? So, you can see in the call, in context of what was happening, when did this go sideways?

Corey: That's right.

Michael: So there was never any Audio Output from the destination. This person was probably saying, "Hey, what's up? Hey, what's going on? Is anybody here?" And then they went silent themselves.

Corey: And then it dropped.

Michael: Yep, so you can see, just by looking at this information. You don't have to, like, ask, "Hey, Twilio Support, what happened with this call?" You know what happened with this call. This person was on the line with that person, they couldn't hear them, they hung out for a second, they dropped off the call.

Corey: This is super, super clear. I mean, talk about the power of graphs, right? And I'm not going to assume that everyone knows how to read a graph.

Michael: Right.

Corey: But I do think that is super compelling. When you see something like this, it's very clear that you know what questions to ask as a result of having this data available, which I think is super cool.

Michael: Yeah. And the other thing that we do in here, is that we let you look at both sides of the call. So, one of the things, from Twilio's perspective that's a little bit hard for developers to kind of rock is there's the concept of the child call and the parent call. So, your calling party thinks that they're on one call, Twilio thinks they're on two calls, and they're not actually separated from an Insights perspective. You can go down and look at the other call.

Corey: And you can see it.

Michael: The same call. Here's their information, you can see that the same details that we have here, there's fewer details for the PSTN call than there are the client call, like we mentioned earlier. And then if we jump back over to the Metrics, we'll see the metrics for that call as well.

Corey: Oh, That's amazing. You see it right there.

Michael: And the Event Stream for this call, there are fewer events for PSTN calls as well. So, we don't get ice events and all of those types of things, but the standard issue call progress events that you get with the Twilio Programmable Voice Minute, they're all here for you.

Corey: Man, I gotta tell you, Michael, I'm, like, fascinated by all of this, and we are literally just coming up on time here.

The Voice Insights API

Michael: Oh no. I didn't get to show you the API.

Corey: This is so fun. God, I do feel like that is the next question. Where is the API? What's the API? How do we do the API?

Michael: So, the API, along with the Metrics is actually part of the paid features. But the API is real simple. Basically you just make a Get Request to the Call Summary. And we actually return a lot more information via the API than you even get in the Call Summary.

Corey: Oh my gosh!

Michael: So, we'll show you, not just the two edges that are in the call, we'll show the internal edge and the external edge so you can where in the, if inside of Twilio the problem was introduced and in what direction. So, for example, you have two parties, it's fine on this edge, sounds like trash on this edge, you know that it was introduced on that stream on the way out to that user.

Corey: Oh my goodness. This is fascinating. I love that. It's like, again, human-readable, all in JSON, we've probably got a defined schema somewhere in our docs.

Michael: 100%.

Corey: And, so, it just makes it really easy to understand what you should expect when you make that REST API call.

Michael: Yep. And it's a really deep API so, you know, it's kind of a choose your own adventure. We surface the insights tags at the top level, and then we have different levels so you can go down to individual edges and then go down to individual inbound and outbound streams. But you can also just say: Was there a problem with this call or not? If we say yes, then you can investigate further. If we say no, move on with your day.

Corey: So, okay, so, this is like the final final question. 'Cause we've had a ton of fun, we now do have to let you go. Where do folks go to follow up? If they want to go look up information, if they want to go, kind of, look into this on their own, where do they start?

Michael: Yeah, so, I think the Voice Insights docs are a good place to start. But you don't need to enable anything to get access to it. So go into Console, go to the Voice section. Right on the left-hand nav there we have the Insights. Click on that, you'll be taken to the dashboard. Click around in your data, see what you can find out. Use some filtering. You might identify some strange behavior in your account and you can investigate further.

Corey: Hey, that's amazing, Michael. Thank you so much.

Michael: Yeah.

Corey: Like, thank you again Michael.

Michael: Yeah, my pleasure.

Corey: It's your boy, Corey "Hurricane" Weathers. I'll be back.

Corey's talk with Michael

Hope you enjoyed the transcipt of Michael and Corey's stream session! Find more about Voice Insights 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