Setting up a phone number to activate a pagerduty alert Version 1

Posted on Thursday, October 9, 2014

This guide will walk through setting up a Twilio phone
number which when called with send an email to a pagerduty email service. This effectively gives you an emergency call
number! I call it version 1, because I
feel there are far better ways to do this, but in the meantime this works.

pagerduty email service

This will create an "Integration Email". You can change it. For this example mine is set to patrick-test-alarm@10x13.pagerduty.com

Click Add Service

This service will now be activated. Send an email to
patrick-test-alarm@10x13.pagerduty.com and it will activate.

A quick fix

If you look closely at the alert you will see this.

This means a new incident will be triggered only for emails
with different subject lines in them. I
can see problems with that so I am going to change it.

Click the configure button and select Edit

Select "Open a new incident only if an open incident
does not already exists"

This will allow all alerts in, but if you are currently
working the issue it will not alert you again and again.

I changed these settings as well. I un-checkbox both the Incident Ack Timeout
and Incident Auto-Resolution.

I make a point of this because I think its an odd default
behavior. I would think pagerduty's
default would be to have both these unchecked.

Click Save Changes

Test it out

Send an email to active the alert.

Here is an audio recording

Your browser does not support the audio element.

The subject of the email will be read back to you but not
the body.

If you need to read the body you can open the incident in
pagerduty

And click on View Message

A pop up will show the email that was received, including
the body.

Twilio and Twimlets

For a quick round up:

I have service in pagerduty that triggers when I send an
email to patrick-test-alarm@10x13.pagerduty.com
. Now I just need to set up a Twilio
number that accepts a call and creates an email that is sent to this address.

This is patrick's emergency system, if this is not an
emergency please hang up, otherwise enter key code

Enter menu option key code.
This is really meant to be a menu, press 1 for this, press 2 for that…
etc. But I can use it for another
purpose. In this case you have to press
1234, the key code, before it will do the next thing. If an incorrect key code is entered nothing
will happen.

Click on Generate a Twimlet

From the pop up select voicemail

Click Continue

Enter the pagerduty email and a message and click OK.

Here is my message

Please leave a message describing the problem, when you
are done recording your message press any key

Warning:I have had mixed results with this, at one point Twilio would not email pagerduty
for some reason, so I had to route it through another email. But it seems to be working since then.

Click Save URL

Give this twimlet a name and click Save. This twimlet is associated with your twimlet
account.

Test it!

Opening the email in pagerduty I get a link to the call
Twilio recorded.

Here is the Twilio recording I got back.

Your browser does not support the audio element.

Here is the actual call I got back from pagerduty.

Your browser does not support the audio element.

One addition fix

For the Twilio number I have a key code the user has to
enter to trigger the email. In my mind
that prevents some random person calling your number by accident or on purpose
and triggering your pagerduty alert.
But, the email is still an issue in my mind. I am trying to figure out how to use Twilio
with parse cloud code to solve this problem; bypassing the email altogether and
calling a pagerduty restful service.
Until I have that done there is one thing I can do to try and prevent
someone from sending a random email to patrick-test-alarm@10x13.pagerduty.com
(And by the time I post this the email service will be removed)

Regex filters!

Pagerduty allows you to set up regex filters on email services. You can filter on subject, body, and from
address.

Looking real quick at the email I received from Twilio it
was sent by voicemail@twimlets.com.

My idea is to only let emails from this address through.

To set the regex first click on edit from the config pull
down for your service.

From Email Filters select "Accept email only if it
matches ALL of the rules below"

If you want to do some more complex regex I found this
site http://regexpal.com/
[1] which may be a good place to test you regex.

Test it!

I tried to send an email from my gmail account to patrick-test-alarm@10x13.pagerduty.com
… and no incident was triggered, also no return email, rejecting the incident
(that would be a handy thing to have).

But if I call into my emergency Twilio phone number… it
works just fine.

Conclusion

You now have the tools you need to create a simple emergency
number. To me, it does not feel like a
long term solution … I don't like the idea of relying on email. However I think it’s a great place to start!