blob: fe13287d4266699685ea6ddb899d34d00ebcde9b [file] [log] [blame]
#! /usr/bin/env python3
# Copyright (C) 2016 The Android Open Source Project
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
"""The twilio client that initiates the call."""
# TODO(danielvernon):Generalize client to use any service including phone.
from import Client
import yaml
ACCOUNT_SID_KEY = 'account_sid'
AUTH_TOKEN_KEY = 'auth_token'
PHONE_NUMBER_KEY = 'phone_number'
URLS_KEY = 'urls'
class TwilioClient:
"""A class that wraps the Twilio Client class and can make calls.
__account_sid: The account id
__auth_token: The authentication token
__phone_number: The phoone number
urls: urls that will be played during call
def __init__(self, cfg_path):
self.__account_sid = None
self.__auth_token = None
self.__phone_number = None
self.urls = None
self.client = Client(self.__account_sid, self.__auth_token)
self.call_handle = self.client.api.account.calls
def load_config(self, cfg_path):
"""Loads the config for twilio.
cfg_path: A string, which is the path to the config file.
with open(cfg_path) as cfg_file:
cfg = yaml.load(cfg_file)
self.__account_sid = cfg[ACCOUNT_SID_KEY]
self.__auth_token = cfg[AUTH_TOKEN_KEY]
self.__phone_number = cfg[PHONE_NUMBER_KEY]
self.urls = cfg[URLS_KEY]
def call(self, to):
"""Makes request to Twilio API to call number and play music.
Must be registered with Twilio account in order to use this client.
to: the number to call (str). example -- '+12345678910'
call.sid: the sid of the call request.
call = self.call_handle.create(to=to, from_=self.__phone_number,
url=MUSIC_URL, status_callback=MUSIC_URL)
return call.sid