Twilio アドオン

アドオンは、開発者による Twilio API の使い方を広げる、組み込み済みのパートナーテクノロジーです。アドオンを使用すると、Twilio とサードパーティーの能力を結集して、短期間で豊富な機能を備えたコミュニケーションエクスペリエンスを構築できます。開発者は、ニーズに合わせて適切なテクノロジーを選択するだけでよく、さまざまなプラットフォームを学習、テスト、および管理する必要はありません。

アドオンは Twilio Marketplace から入手できます。検証済みのアドオンのリストから目的のものを選択し、ワンクリックでインストールできます。アドオンをインストールすることで、電話番号のスパムスコアが返されたり、メッセージのセンチメント分析が提供されたりするなど、パートナーの機能が有効になり、Twilio API を拡張できます。

サポート対象製品

現在、アドオンは、プログラマブル SMS、プログラマブル Voice - 通話 & 録音、およびルックアップで使用可能です。

アドオンは、Twilio がこれらの製品を通じて提供するコンテンツを、アドオンプロバイダーのデータソースまたはコンテンツ分析テクノロジーを使用して処理し、結果を JSON ディクショナリーとして、現在お客様が使用している既存の Twilio API に追加する形で呼び出し元に返します。

アドオンの例として、電話番号による該当する層とマーケティングデータのクエリ、番号詐欺/スパムブラックリスト、録音トランスクリプション、メッセージセンチメント分析などがあります。

Twilio の電話番号、着信メッセージの本文、および通話の録音の各コンテンツをアドオンで拡張できます。

アドオンのタイプ このタイプのアドオンをサポートする製品 アドオンが使用可能なデータ 利用モード
電話番号アドオン ルックアップ、プログラマブル SMS、プログラマブル Voice - 通話 電話番号 同期
メッセージ分析アドオン Programmable SMS 電話番号、メッセージ本文 同期
録音分析アドオン プログラマブル Voice - 録音 オーディオファイル(シングルまたはデュアルチャネル) 非同期

サービス利用規約とデータ保存

アドオンは、TwilioによってTwilio Marketplaceで提供およびサポートされます。 アドオンのインストールプロセスの一環として、アドオンプロバイダーのサービス利用規約に合意する必要があります。 アドオンは、パートナーのサービス利用規約とプライバシーポリシーの下でライセンス提供されることに注意してください。

設定と識別子

アドオンをインストールすると、そのインスタンスが作成されて、アカウントに関連付けられます。アドオンインスタンスには、アドオンの運用に必要な設定情報が保持されます。その一部を次に示します。

設定情報
(コンソールでアクセス可能)
内容 ユーザーが設定可能 ?
有効な Twilio 製品 このアドオンがサポートし、有効になっている Twilio 製品のリスト。 はい
設定パラメーター アドオン固有の設定パラメーター。 はい
アドオンのユニークな名前 人間が読みやすいユニークな識別子。Twilio API で特定のアドオンを呼び出して、その結果を利用するために使用します。

例:twilio_caller_identity
はい(サフィックスのみ)
アドオンインストール SID このアドオンインスタンスのユニークな識別子です。デバッグおよび課金クエリに使用します。また、アドオンプロバイダーとやりとりする際に、サポートリクエストで指定する必要があります。

例:MC000003333333333345678901234566
いいえ

設定パラメーターをサポートするアドオンの場合、インスタンスを追加して、各インスタンスに固有の有効な Twilio 製品と設定パラメーターを設定することができます。これにより、英語テキスト分析用と仏語テキスト分析用のように、1つのアドオンに対して複数の設定を作成して呼び出すことができます。Twilio 製品および各製品でサポートされている設定パラメーターについては、個々のアドオンのドキュメントをご覧ください。

注意 :現在、アドオンは、アカウントレベルでインストールして、有効になります。言い換えると、着信 SMS などの特定の製品でアドオンを有効にした場合、SMS が着信するたびにそのアドオンが呼び出されます。 一部の Twilio 製品(ルックアップなど)は、コンソールでその製品に対してアドオンを有効にした上で、アドオンを呼び出すためにそのユニークな名前を指定する必要があります。

Add-Onデータの使用

Add-onの使用を参照してください。

料金と課金

Marketplaceでは、パートナーが希望する料金をもとに設定するTwilio課金システムにおいて、従量課金を実行させることができます。 Twilio はアドオンの使用量を測定して、開発者のアカウントから料金を引き落とします。

Marketplace でサポートしているアドオン課金モデルを次に示します。

  • 使用回数型

  • 使用時間型:録音分析アドオン向け

  • 購読型(近々提供予定)

  • インストール型(近々提供予定)

アドオンの料金は Marketplace カタログで、アドオンの使用量はコンソールの「Usage」ページで、それぞれ確認できます。

アドオンのサポート

アドオンは、TwilioによってTwilio Marketplaceで提供およびサポートされます。 アドオンパートナーのサポート情報(電話番号、サポートメール、予想される解決時間とプロセス)は、アドオンごとに異なり、アドオン詳細ページに記載されています。

次の表に、アドオン関連の問題について、Twilio に連絡する必要がある場合とアドオンパートナーに連絡する必要がある場合をまとめます。

Issue サポート担当
コールバックに AddOns パラメーターがない Twilio
Error Codes 61000, 61003, 61006, 61009 Twilio
Error Codes 61001, 61002, 61004, 61005, 61007, 61008, アドオンパートナー
上記以外のエラーコード Twilio
アドオンの結果が正確ではないか、またはアドオンドキュメントの記述どおりになっていない アドオンパートナー

Twilio またはアドオンパートナーに連絡して、アドオンのサポートをリクエストする場合、問題の特定と解決に役立つ次の情報を提供する必要があります。

識別子 内容 確認方法
アドオンのユニークな名前 人間が読みやすいユニークな識別子。Twilio API で特定のアドオンを呼び出して、その結果を利用するために使用します。

例:twilio_caller_identity
コンソールの「Installed Add-ons」セクションを参照します。
リクエスト Sid 特定のアドオンリクエストのユニークな識別子です。課金とデバッグに使用します。

例:XR000009775bb6d43d1cabc4955723fae1
Twilio から受信する API レスポンスまたはコールバックに含まれるアドオンの結果を参照します。
アドオンインストール SID アドオンの開発者インストールのユニークな識別子。

例:MC000003333333333345678901234566
コンソールの「Installed Add-ons」セクションを参照します。

サンプル

Note that Add-ons are supported in the Next gen Twilio helper libraries only.

コードサンプルを読み込んでいます...
Language
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • JSON
// Get your Account SID and Auth Token from twilio.com/console
const accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const authToken = 'your_auth_token';

// Download the Node.js helper library from twilio.com/docs/libraries/node
const client = require('twilio')(accountSid, authToken);

client.lookups.v1
  .phoneNumbers('+16502530000')
  .fetch({
    addOns: 'payfone_tcpa_compliance',
    addOnsData: {
      'payfone_tcpa_compliance.RightPartyContactedDate': '20160101',
    },
  })
  .then(number => console.log(number.addOns));
// Download the C# helper library from twilio.com/docs/libraries/csharp
using System;
using System.Collections.Generic;
using Twilio;
using Twilio.Rest.Lookups.V1;
using Twilio.Types;

namespace Example
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            // Get your Account SID and Auth Token from twilio.com/console
            const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
            const string authToken = "your_auth_token";

            TwilioClient.Init(accountSid, authToken);

            var addOns = new List<string> { "payfone_tcpa_compliance" };
            var addOnsData = new Dictionary<string, object>
            {
                { "payfone_tcpa_compliance.RightPartyContactedDate", "20160101" }
            };

            var phoneNumberFetcher =
                PhoneNumberResource.Fetcher(new PhoneNumber("+16502530000"));
            phoneNumberFetcher.addOns = addOns;
            phoneNumberFetcher.addOnsData = addOnsData;

            var number = phoneNumberFetcher.Fetch();
            Console.WriteLine(number.addOns);
        }
    }
}
<?php

// Download the PHP helper library from twilio.com/docs/libraries/php
require_once '/path/to/vendor/autoload.php'; // Loads the library

use Twilio\Rest\Client;

// Get your Account SID and Auth Token from twilio.com/console
$accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$authToken = "your_auth_token";

$client = new Client($accountSid, $authToken);

$number = $client->lookups
    ->phoneNumbers("+16502530000")
    ->fetch(
        [
            "addOns" => "payfone_tcpa_compliance",
            "addOnsData" => [
                "payfone_tcpa_compliance.RightPartyContactedDate" => "20160101"
            ]
        ]
      );

print_r($number->addOns);
# Download the Ruby helper library from twilio.com/docs/libraries/ruby
require 'twilio-ruby'

# Get your Account SID and Auth Token from twilio.com/console
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'

# Initialize Twilio Client
@client = Twilio::REST::Client.new(account_sid, auth_token)

number = @client.lookups.v1
                .phone_numbers('+16502530000') \
                .fetch(add_ons: 'payfone_tcpa_compliance',
                       add_ons_data: {
                         'payfone_tcpa_compliance.RightPartyContactedDate' => '20160101'
                       })

print(number.add_ons)
# Download the Python helper library from twilio.com/docs/libraries/python
from twilio.rest import Client


# Get your Account SID and Auth Token from twilio.com/console
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "your_auth_token"
client = Client(account_sid, auth_token)

number = client.lookups \
               .phone_numbers("+16502530000") \
               .fetch(add_ons="payfone_tcpa_compliance",
                      add_ons_data={"payfone_tcpa_compliance.RightPartyContactedDate": "20160101"})

print(number.add_ons)
// Download the Java helper library from twilio.com/docs/libraries/java
import com.twilio.Twilio;
import com.twilio.rest.lookups.v1.PhoneNumber;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Example {

    // Get your Account SID and Auth Token from twilio.com/console
    public static final String ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    public static final String AUTH_TOKEN = "your_auth_token";

    public static void main(String[] args) {
        Twilio.init(ACCOUNT_SID, AUTH_TOKEN);

        List<String> addOns = Arrays.asList("payfone_tcpa_compliance");
        Map<String, Object> addOnsData = new HashMap<String, Object>() {{
            put("payfone_tcpa_compliance.RightPartyContactedDate", "20160101");
        }};

        PhoneNumber number = PhoneNumber
                .fetcher(new com.twilio.type.PhoneNumber("+15108675310"))
                .setAddOns(addOns)
                .setAddOnsData(addOnsData)
                .fetch();

        System.out.println(number.getAddOns());
    }
}
{
  "code": null,
  "message": null,
  "results": {
    "payfone_tcpa_compliance": {
      "code": null,
      "message": null,
      "request_sid": "XRbf6b302b9ba37726eb04bf590e937d3c",
      "result": {
        "Description": "Success.",
        "RequestId": "XRbf6b302b9ba37726eb04bf590e937d3c",
        "Response": {
          "MSISDNType": "Landline",
          "NumberMatch": "I",
          "PayfoneAlias": null,
          "VerifyNumberTransactionId": "1154411284"
        },
        "Status": 0
      },
      "status": "successful"
    }
  },
  "status": "successful"
}
Use a helper library to make a Lookups API request using the Payfone TCPA Compliance add-on.
Lookups with Payfone TCPA Compliance Add-on

Use a helper library to make a Lookups API request using the Payfone TCPA Compliance add-on.

コードサンプルを読み込んでいます...
Language
形式:
  • JSON
$ curl -XGET https://lookups.twilio.com/v1/PhoneNumbers/+16502530000/?AddOns=provider_caller_identity \
    -u 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token'
{
  "caller_name": null,
  "country_code": "US",
  "phone_number": "+16502530000",
  "national_format": "(650) 253-0000",
  "carrier": null,
  "add_ons": {
    "status": "successful",
    "message": null,
    "code": null,
    "results": {
      "provider_caller_identity": {
        "status": "successful",
        "message": null,
        "code": null,
        "result": {
          "results": [
            {
              "id": {
                "type": "Phone"
              },
              "line_type": "NonFixedVOIP",
              "belongs_to": [
                {
                  "id": {
                    "type": "Business"
                  },
                  "name": "Captura Mexico",
                  "locations": null,
                  "phones": null
                }
              ],
              "associated_locations": [
                {
                  "id": {
                    "type": "Location"
                  },
                  "type": "Address",
                  "valid_for": null,
                  "legal_entities_at": null,
                  "city": "Mountain View",
                  "postal_code": "94043",
                  "zip4": "1351",
                  "state_code": "CA",
                  "country_code": "US",
                  "usage": "Business",
                  "delivery_point": "SingleUnit",
                  "address_type": "Street",
                  "lat_long": {
                    "latitude": 37.42197,
                    "longitude": -122.084137,
                    "accuracy": "RoofTop"
                  },
                  "is_deliverable": true,
                  "standard_address_line1": "1600 Amphitheatre Pkwy",
                  "standard_address_line2": "",
                  "is_historical": false
                }
              ],
              "phone_number": "6502530000",
              "country_calling_code": "1",
            }
          ],
          "messages": []
        },
        "requestSid": "XR54a299cf993e4a243dffe355be134f91"
      }
    }
  },
  "url": "https://lookups.twilio.com/v1/PhoneNumbers/+16502530000"
}
Use cURL to make a Lookup API request with a specific add-on to use specified in the query string.
Lookup with provider_caller_identity Add-on

Use cURL to make a Lookup API request with a specific add-on to use specified in the query string.

コードサンプルを読み込んでいます...
Language
{
  "status":"successful",
  "message":null,
  "code":null,
  "results":{
     "provider1_natural_tcpa_optout_detection":{
        "request_sid":"XR7b57f17eeae56053f034a8a819577e89",
        "status":"successful",
        "message":null,
        "code":null,
        "result":{
           "probability":0
        }
     },
     "provider2_language_insights":{
        "request_sid":"XR424628481f74b64b709950f1311b2235",
        "status":"successful",
        "message":null,
        "code":null,
        "result":{
           "status":"OK",
           "language":"english",
           "keywords":[
              {
                 "text":"Hi",
                 "relevance":"0.976891",
                 "sentiment":{
                    "type":"positive",
                    "score":"0.57102"
                 }
              },
              {
                 "text":"new add-ons",
                 "relevance":"0.935276",
                 "sentiment":{
                    "type":"positive",
                    "score":"0.415215"
                 }
              },
              {
                 "text":"Twilio",
                 "relevance":"0.728652",
                 "sentiment":{
                    "type":"positive",
                    "score":"0.415215"
                 }
              }
           ],
           "concepts":[

           ],
           "entities":[
              {
                 "type":"Company",
                 "relevance":"0.77978",
                 "sentiment":{
                    "type":"positive",
                    "score":"0.415215"
                 },
                 "count":"1",
                 "text":"Twilio",
                 "disambiguated":{
                    "name":"Twilio",
                    "dbpedia":"http://dbpedia.org/resource/Twilio",
                    "freebase":"http://rdf.freebase.com/ns/m.0h1bs6j"
                 }
              }
           ]
        }
     }
  }
}
With add-ons enabled, SMS webhooks will receive a new POST parameter, a JSON-encoded string called "AddOns" - this is an example of formatted JSON you'd receive in that webhook request.
Incoming SMS with Add-ons enabled (Webhook JSON format)

With add-ons enabled, SMS webhooks will receive a new POST parameter, a JSON-encoded string called "AddOns" - this is an example of formatted JSON you'd receive in that webhook request.

ヘルプが必要ですか?

誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。

コードサンプルを読み込んでいます...
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • JSON
// Get your Account SID and Auth Token from twilio.com/console
const accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const authToken = 'your_auth_token';

// Download the Node.js helper library from twilio.com/docs/libraries/node
const client = require('twilio')(accountSid, authToken);

client.lookups.v1
  .phoneNumbers('+16502530000')
  .fetch({
    addOns: 'payfone_tcpa_compliance',
    addOnsData: {
      'payfone_tcpa_compliance.RightPartyContactedDate': '20160101',
    },
  })
  .then(number => console.log(number.addOns));
// Download the C# helper library from twilio.com/docs/libraries/csharp
using System;
using System.Collections.Generic;
using Twilio;
using Twilio.Rest.Lookups.V1;
using Twilio.Types;

namespace Example
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            // Get your Account SID and Auth Token from twilio.com/console
            const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
            const string authToken = "your_auth_token";

            TwilioClient.Init(accountSid, authToken);

            var addOns = new List<string> { "payfone_tcpa_compliance" };
            var addOnsData = new Dictionary<string, object>
            {
                { "payfone_tcpa_compliance.RightPartyContactedDate", "20160101" }
            };

            var phoneNumberFetcher =
                PhoneNumberResource.Fetcher(new PhoneNumber("+16502530000"));
            phoneNumberFetcher.addOns = addOns;
            phoneNumberFetcher.addOnsData = addOnsData;

            var number = phoneNumberFetcher.Fetch();
            Console.WriteLine(number.addOns);
        }
    }
}
<?php

// Download the PHP helper library from twilio.com/docs/libraries/php
require_once '/path/to/vendor/autoload.php'; // Loads the library

use Twilio\Rest\Client;

// Get your Account SID and Auth Token from twilio.com/console
$accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$authToken = "your_auth_token";

$client = new Client($accountSid, $authToken);

$number = $client->lookups
    ->phoneNumbers("+16502530000")
    ->fetch(
        [
            "addOns" => "payfone_tcpa_compliance",
            "addOnsData" => [
                "payfone_tcpa_compliance.RightPartyContactedDate" => "20160101"
            ]
        ]
      );

print_r($number->addOns);
# Download the Ruby helper library from twilio.com/docs/libraries/ruby
require 'twilio-ruby'

# Get your Account SID and Auth Token from twilio.com/console
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'

# Initialize Twilio Client
@client = Twilio::REST::Client.new(account_sid, auth_token)

number = @client.lookups.v1
                .phone_numbers('+16502530000') \
                .fetch(add_ons: 'payfone_tcpa_compliance',
                       add_ons_data: {
                         'payfone_tcpa_compliance.RightPartyContactedDate' => '20160101'
                       })

print(number.add_ons)
# Download the Python helper library from twilio.com/docs/libraries/python
from twilio.rest import Client


# Get your Account SID and Auth Token from twilio.com/console
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "your_auth_token"
client = Client(account_sid, auth_token)

number = client.lookups \
               .phone_numbers("+16502530000") \
               .fetch(add_ons="payfone_tcpa_compliance",
                      add_ons_data={"payfone_tcpa_compliance.RightPartyContactedDate": "20160101"})

print(number.add_ons)
// Download the Java helper library from twilio.com/docs/libraries/java
import com.twilio.Twilio;
import com.twilio.rest.lookups.v1.PhoneNumber;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Example {

    // Get your Account SID and Auth Token from twilio.com/console
    public static final String ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    public static final String AUTH_TOKEN = "your_auth_token";

    public static void main(String[] args) {
        Twilio.init(ACCOUNT_SID, AUTH_TOKEN);

        List<String> addOns = Arrays.asList("payfone_tcpa_compliance");
        Map<String, Object> addOnsData = new HashMap<String, Object>() {{
            put("payfone_tcpa_compliance.RightPartyContactedDate", "20160101");
        }};

        PhoneNumber number = PhoneNumber
                .fetcher(new com.twilio.type.PhoneNumber("+15108675310"))
                .setAddOns(addOns)
                .setAddOnsData(addOnsData)
                .fetch();

        System.out.println(number.getAddOns());
    }
}
{
  "code": null,
  "message": null,
  "results": {
    "payfone_tcpa_compliance": {
      "code": null,
      "message": null,
      "request_sid": "XRbf6b302b9ba37726eb04bf590e937d3c",
      "result": {
        "Description": "Success.",
        "RequestId": "XRbf6b302b9ba37726eb04bf590e937d3c",
        "Response": {
          "MSISDNType": "Landline",
          "NumberMatch": "I",
          "PayfoneAlias": null,
          "VerifyNumberTransactionId": "1154411284"
        },
        "Status": 0
      },
      "status": "successful"
    }
  },
  "status": "successful"
}
形式:
  • JSON
$ curl -XGET https://lookups.twilio.com/v1/PhoneNumbers/+16502530000/?AddOns=provider_caller_identity \
    -u 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token'
{
  "caller_name": null,
  "country_code": "US",
  "phone_number": "+16502530000",
  "national_format": "(650) 253-0000",
  "carrier": null,
  "add_ons": {
    "status": "successful",
    "message": null,
    "code": null,
    "results": {
      "provider_caller_identity": {
        "status": "successful",
        "message": null,
        "code": null,
        "result": {
          "results": [
            {
              "id": {
                "type": "Phone"
              },
              "line_type": "NonFixedVOIP",
              "belongs_to": [
                {
                  "id": {
                    "type": "Business"
                  },
                  "name": "Captura Mexico",
                  "locations": null,
                  "phones": null
                }
              ],
              "associated_locations": [
                {
                  "id": {
                    "type": "Location"
                  },
                  "type": "Address",
                  "valid_for": null,
                  "legal_entities_at": null,
                  "city": "Mountain View",
                  "postal_code": "94043",
                  "zip4": "1351",
                  "state_code": "CA",
                  "country_code": "US",
                  "usage": "Business",
                  "delivery_point": "SingleUnit",
                  "address_type": "Street",
                  "lat_long": {
                    "latitude": 37.42197,
                    "longitude": -122.084137,
                    "accuracy": "RoofTop"
                  },
                  "is_deliverable": true,
                  "standard_address_line1": "1600 Amphitheatre Pkwy",
                  "standard_address_line2": "",
                  "is_historical": false
                }
              ],
              "phone_number": "6502530000",
              "country_calling_code": "1",
            }
          ],
          "messages": []
        },
        "requestSid": "XR54a299cf993e4a243dffe355be134f91"
      }
    }
  },
  "url": "https://lookups.twilio.com/v1/PhoneNumbers/+16502530000"
}
{
  "status":"successful",
  "message":null,
  "code":null,
  "results":{
     "provider1_natural_tcpa_optout_detection":{
        "request_sid":"XR7b57f17eeae56053f034a8a819577e89",
        "status":"successful",
        "message":null,
        "code":null,
        "result":{
           "probability":0
        }
     },
     "provider2_language_insights":{
        "request_sid":"XR424628481f74b64b709950f1311b2235",
        "status":"successful",
        "message":null,
        "code":null,
        "result":{
           "status":"OK",
           "language":"english",
           "keywords":[
              {
                 "text":"Hi",
                 "relevance":"0.976891",
                 "sentiment":{
                    "type":"positive",
                    "score":"0.57102"
                 }
              },
              {
                 "text":"new add-ons",
                 "relevance":"0.935276",
                 "sentiment":{
                    "type":"positive",
                    "score":"0.415215"
                 }
              },
              {
                 "text":"Twilio",
                 "relevance":"0.728652",
                 "sentiment":{
                    "type":"positive",
                    "score":"0.415215"
                 }
              }
           ],
           "concepts":[

           ],
           "entities":[
              {
                 "type":"Company",
                 "relevance":"0.77978",
                 "sentiment":{
                    "type":"positive",
                    "score":"0.415215"
                 },
                 "count":"1",
                 "text":"Twilio",
                 "disambiguated":{
                    "name":"Twilio",
                    "dbpedia":"http://dbpedia.org/resource/Twilio",
                    "freebase":"http://rdf.freebase.com/ns/m.0h1bs6j"
                 }
              }
           ]
        }
     }
  }
}