使用Dialpad和CSV文件发送自动SMS时出现NotFound错误的解决方法
解决Dialpad API发送SMS返回"Not Found"错误的问题
我正在用Python通过Dialpad发送自动SMS,收件人信息来自CSV(格式为NAME, PHONENUMBER),但一直收到如下错误:
Error sending SMS to Bob (+16124855917): b'Not Found' Error sending SMS to Larry (+17699643423): b'Not Found' Error sending SMS to Harry (+12538355287): b'Not Found' Error sending SMS to Barry (+16128562388): b'Not Found' Error sending SMS to Gary (+12129748516): b'Not Found'
当前使用的Python代码如下:
import csv import requests DIALPAD_API_KEY = 'MY-API-KEY' DIALPAD_PHONE_NUMBER = 'MY-PHONE-NUMBER' def send_sms_message(name, phone_number): if not phone_number.startswith('+'): phone_number = f'+1{phone_number}' url = 'https://dialpad.com/api/v2/sms_messages' headers = { 'Content-Type': 'application/json', 'Authorization': f'Bearer {DIALPAD_API_KEY}' } data = { 'from_number': DIALPAD_PHONE_NUMBER, 'to_number': phone_number, 'text': f'Is this {name}? I want to make sure I have the right number.' } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: print(f'SMS sent to {name} ({phone_number}) successfully') else: print(f'Error sending SMS to {name} ({phone_number}): {response.content}') return response.status_code with open('recipients.csv', 'r') as f: reader = csv.reader(f) for row in reader: name = row[0] phone_number = row[1].replace(' ', '') # Remove any whitespace send_sms_message(name, phone_number)
解决步骤
修正API端点路径:Dialpad发送SMS的正确API端点是
https://dialpad.com/api/v2/sms,而非当前代码中的/sms_messages。路径错误会直接返回404 Not Found,这是最可能的原因。验证发送号码有效性:
- 确保
DIALPAD_PHONE_NUMBER是你Dialpad账户下已激活、支持SMS发送的号码,格式必须带+号前缀(如+1XXXXXXXXX)。 - 确认该号码属于你的Dialpad团队,且未被限制SMS发送权限。
- 确保
检查API密钥权限:
- 确认你的API密钥拥有
sms:send权限,无对应权限也会导致类似错误。可在Dialpad控制台的API密钥设置中查看权限列表。
- 确认你的API密钥拥有
处理CSV表头(如果存在):如果CSV文件第一行是表头(如
NAME,PHONENUMBER),当前代码会把表头当作收件人处理,导致无效请求。可修改循环跳过第一行:with open('recipients.csv', 'r') as f: reader = csv.reader(f) next(reader) # 跳过表头行 for row in reader: name = row[0] phone_number = row[1].replace(' ', '') send_sms_message(name, phone_number)获取更详细的错误信息:修改错误处理逻辑,打印完整响应状态码和JSON内容,便于定位问题:
else: print(f'Error sending SMS to {name} ({phone_number}): Status {response.status_code}, {response.json()}')
内容的提问来源于stack exchange,提问作者Nithila Logathas
相关产品推荐
相关产品推荐

