Home

Awesome

Overview

A simple Alexa skill that uses the FCC database to lookup information for radio callsigns.

"Q.R.Z." is a old radio telegraphy code that was used to ask "Who is calling me?"

This project is not affliated with www.qrz.com.

Icons

Public Domain from [https://thenounproject.com/term/radio-tower/236682/]

About the Interaction Model

While building this app, I encountered various restrictions with the Alexa voice model.

Originally I wanted a very simple voice model

{
  "intents": [
    {
      "intent": "GetQRZ",
      "slots": [
        {
          "name": "CallSign",
          "type": "AMAZON.LITERAL"
        },
      ],
    }
  ]
}
GetQRZ who is {CallSign}

But that is invalid syntax, because the literal needs to include the possible values, for example:

GetQRZ who is {ABC123|CallSign}

This is obviously a non-starter. So I defined a custom-type called LETTER_OR_NUMBER, the only odd thing here is that is requires that numbers be written as words (i.e. "one" instead of "1")

A
B
C
...
X
Y
Z
zero
one
two

Then I went back and changed the intent:

{
  "intents": [
        {
          "name": "CallSign1",
          "type": "LETTER_OR_NUMBER"
        },
        {
          "name": "CallSign2",
          "type": "LETTER_OR_NUMBER"
        },
        {
          "name": "CallSign3",
          "type": "LETTER_OR_NUMBER"
        },
        {
          "name": "CallSign4",
          "type": "LETTER_OR_NUMBER"
        },
        {
          "name": "CallSign5",
          "type": "LETTER_OR_NUMBER"
        },
        {
          "name": "CallSign6",
          "type": "LETTER_OR_NUMBER"
        },
        {
          "name": "CallSign7",
          "type": "LETTER_OR_NUMBER"
        }
      ]
    }
  ]
}

And it turns out that numbers cannot be used in slot names. So that is why the slots are named A-G.

{
  "intents": [
        {
          "name": "CallSignA",
          "type": "LETTER_OR_NUMBER"
        },
        {
          "name": "CallSignB",
          "type": "LETTER_OR_NUMBER"
        },
        {
          "name": "CallSignC",
          "type": "LETTER_OR_NUMBER"
        },
        {
          "name": "CallSignD",
          "type": "LETTER_OR_NUMBER"
        },
        {
          "name": "CallSignE",
          "type": "LETTER_OR_NUMBER"
        },
        {
          "name": "CallSignF",
          "type": "LETTER_OR_NUMBER"
        },
        {
          "name": "CallSignG",
          "type": "LETTER_OR_NUMBER"
        }
      ]
    }
  ]
}