Twilio Auth windows 环境变量

Twilio Auth windows enviro variables

我正在整理一些 python 代码来从 Twilio 移动和删除录音。网上有很多文档可以帮助编写脚本,但文档说我需要将授权代码和令牌添加为 windows 变量。该文档显示了如何到达正确的位置以添加这些变量,但并未准确显示要输入的内容、将其输入的位置或所需的确切格式。我对这一切都是陌生的。在我的 Windows 10 机器上 - 在新变量 window 中 - 它要求 'variable name' 和 'variable value'。我需要确切地知道我输入的内容以及它应该采用的格式。任何帮助将不胜感激。谢谢!

创建此代码的大部分信息来自 https://www.twilio.com/blog/2016/05/bulk-delete-your-twilio-recordings-with-python.html

    from twilio.rest import TwilioRestClient
import csv
import threading
from queue import Queue
from datetime import date
import os
import requests
from requests.auth import HTTPBasicAuth
# Ensure your environmental variables have these configured
account_sid = "{{ myaccountSID }}"
auth_token  = "{{ myToken }}"

# Initialize Twilio Client
client = TwilioRestClient(account_sid, auth_token)

# Create a lock to serialize console output
lock = threading.Lock()


# The work method includes a print statement to indicate progress
def do_work(recording_sid):
    client.recordings.delete(recording_sid)
    # Make sure the whole print completes or
    # threads can mix up output in one line.
    with lock:
        print(threading.current_thread().name, "has deleted", recording_sid)


def do_work(recording):
    data = requests.get(recording.uri, auth=HTTPBasicAuth(),
                        stream=True)
    # Create a .wav file and stream the recording to improve performance.
    with open(recording.sid + '.wav', 'wb') as fd:
        for chunk in data.iter_content(1):
            fd.write(chunk)
    client.recordings.delete(recording.sid)
    # Make sure the whole print completes or threads
    # can mix up output in one line.
    with lock:
        print(threading.current_thread().name,
              "has downloaded to the local folder and "
              "has been deleted off Twilio", recording_sid)
        que.task_done()


# Create the queue and thread pool.
# The range value controls the number of threads you run.
que = Queue()
for idx in range(20):
    thread = threading.Thread(target=worker)
    # thread dies when main thread (only non-daemon thread) exits.
    thread.daemon = True
    thread.start()

    # Open up a CSV file to dump the results of deleted recordings into
with open('recordings.csv', 'w') as csvfile:
    record_writer = csv.writer(csvfile, delimiter=',')
    # Let's create the header row
    record_writer.writerow(["Recording SID", "Duration", "Date", "Call SID"])
    # You can use a date filter if needed. e.g. before=date(2016, 5, 30)
    for recording in client.recordings.iter(before=date(2016, 5, 30)):
        record_writer.writerow([recording.sid, recording.duration,
                                recording.date_updated, recording.call_sid])
        que.put(recording)
    que.join()  # block until all tasks are done

print("All done!")

这里是 Twilio 布道者。

默认情况下,Twilio Python helper library 中的 TwilioRestClient 对象在当前环境中查找名为 TWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKEN 的环境变量。这里有一个 post 描述了如何在 Windows 上设置环境变量:

https://superuser.com/questions/284342/what-are-path-and-other-environment-variables-and-how-can-i-set-or-use-them

因此,要为您的帐户 Sid 设置环境变量,您需要打开命令提示符并输入:

c:\>set TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXXXXXXXXXX

将凭据保存在环境变量中是确保这些凭据安全并有助于防止您不小心将它们签入源代码管理之类的事情的好方法。

如果您不想使用环境变量,您也可以通过构造函数直接向库提供凭据:

from twilio.rest import TwilioRestClient

ACCOUNT_SID = "AXXXXXXXXXXXXXXXXX"
AUTH_TOKEN = "YYYYYYYYYYYYYYYYYY"
client = TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN)

希望对您有所帮助。

On my Windows 10 machine - in the new variable window - it asks for 'variable name' and 'variable value'.

我没有 Windows10 但我在 Widnows 7 上给你看,它可能是添加系统变量的相同界面。

所以你需要设置两个 'Environment Variables' > 'System Variables':

第一个:

  • 'variable name' 放这个:TWILIO_ACCOUNT_SID
  • 'variable value'放 你的 twilio 帐户 sid 看起来像这样: AC0123456789abcdefabcdefabcdefabcd

第二个:

  • 'variable name' 把这个:TWILIO_AUTH_TOKEN
  • 'variable value' 放置你的 twilio 身份验证令牌,它看起来像这样:0123456789abcdefabcdefabcdefabcd

现在回到您的代码更改此:

account_sid = "{{ myaccountSID }}"
auth_token  = "{{ myToken }}"

对此:

account_sid = os.environ.get('TWILIO_ACCOUNT_SID')
auth_token  = os.environ.get('TWILIO_AUTH_TOKEN')

如果您有命令 window 打开,请关闭它。您需要打开一个新命令 window 才能获取新的环境变量。