Twilio Lookup API – SMSを送信する前に電話番号の詳細情報を取得する #twilio

2019.06.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、中村です。

みなさんも経験があるかと思いますが、電話やアプリなどを利用した時にSMSを送信するケースがあります。 送信にあたってはSMSに送信できる番号かどうか判定する機能が必要です。070/080/090の番号かどうかの判定が簡単ではありますが、昨今の携帯電話番号の枯渇のような課題のため将来的に番号が変更・追加される可能性があります。

そこでTwilioのLookup APIを利用します。Lookup APIは主に、メッセージの配達率の向上・顧客体験の向上を行うために活用できます。

Lookup API

まずは、料金をご紹介します。

Lookupのタイプ名 価格 説明
Format Lookup Free 電話番号のバリデーションするベストな方法
Carrier Lookup $0.005 per request メッセージ送信を確実にするベストな方法
Caller Lookup $0.01 per request 着信元の識別するベストな方法(US only)

今回のニーズでは、Carrier Lookupを利用して電話番号のタイプ(携帯電話なのか固定回線なのかなど)を判定します。一応他のLookupについても簡単に説明します。node.jsのTwilio Helper Libraryを利用するので、npmでインストールしておいてください。

$ npm install twilio
  • 各種タイプは、.fetch({type: 'TYPE_NAME'})で指定します。
  • リクエストに使用する電話番号は、E.164フォーマットにする必要があります。
    • 日本の番号でいうと、最初の0が+81になります。
  • ACCOUNT SIDとAUTH TOKENはコンソールのProject Infoにあります。

Format Lookup

前述の通りインプットされた番号のバリデーションに利用できます。 Format Lookup / Carrier Lookupは個人所有しているauの携帯電話を利用しました。

Request

const accountSid = 'ACxxxxxxxxxxxxxxxxxxxxxxx';
const authToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxx';
const twilio = require('twilio')(accountSid, authToken);

twilio.lookups.phoneNumbers(PHONE_NUMBER_HERE)
    .fetch()
    .then(data => console.log(data));

Response

{ 
    callerName: null,
    countryCode: 'JP',
    phoneNumber: '+81xxxxxxxxxx',
    nationalFormat: 'xxx-xxxx-xxxx',
    carrier: null,
    addOns: null,
    url: 'https://lookups.twilio.com/v1/PhoneNumbers/+81xxxxxxxxxx'
}

Carrier Lookup

入力された電話番号のタイプ、つまりその回線が携帯電話なのか固定回線なのかVoIPなのかやその番号をキャリアを確認できます。 このタイプにより、SMS送信すべきかどうかを判定するといったことが可能になります。

Request

const accountSid = 'ACxxxxxxxxxxxxxxxxxxxxxxx';
const authToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxx';
const twilio = require('twilio')(accountSid, authToken);

twilio.lookups.phoneNumbers(PHONE_NUMBER_HERE)
    .fetch({ type: 'carrier'})
    .then(data => console.log(data));

Response

{ 
    callerName: null,
    countryCode: 'JP',
    phoneNumber: '+81xxxxxxxxxx',
    nationalFormat: 'xxx-xxxx-xxxx',
    carrier:
        { 
            mobile_country_code: '440',
            mobile_network_code: '50',
            name: 'KDDI',
            type: 'mobile',
            error_code: null
        },
    addOns: null,
    url: 'https://lookups.twilio.com/v1/PhoneNumbers/+81xxxxxxxxxxx?Type=carrier'
}

Caller Lookup

最後に電話番号利用者の識別です。この機能はUSの番号でのみ提供されており、かつ利用できないこともあります。個人では番号を持っていないのでAmazon ConnectもしくはTwilio等で電話番号を取得するといいかと思います。Amazon ConnectとTwilioで取得した番号にてAPIを叩いてみましたが、nullが返されました。

Request

const accountSid = 'ACxxxxxxxxxxxxxxxxxxxxxxx';
const authToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxx';
const twilio = require('twilio')(accountSid, authToken);

twilio.lookups.phoneNumbers(PHONE_NUMBER_HERE)
    .fetch({ type: 'caller-name'})
    .then(data => console.log(data));

Response

    {
        callerName: { caller_name: null, caller_type: null, error_code: null },
        countryCode: 'US',
        phoneNumber: '+1xxxxxxxxxx',
        nationalFormat: '(xxx) xxx-xxxx',
        carrier: null,
        addOns: null,
        url: 'https://lookups.twilio.com/v1/PhoneNumbers/+1xxxxxxxxxx?Type=caller-name'
    }

まとめ

今回はLookup APIのOverviewでした。電話番号のバリデーションおよびSMSが送信可能な番号かどうかの確認ができるのでアプリケーションに実装されていると良さそうです。 Twilioにはこの他にも各種APIがあるので今後紹介していきます。