Twilio:按照入门指南进行操作时不发送短信

时间:2019-01-08 14:25:20

标签: swift twilio

作为this question的续篇,在关注this guide之后,我没有收到任何短信。我也没有任何错误。

这是我的Package.swift文件:

    import PackageDescription

    let package = Package(
        name: "MyProject",
        dependencies: [
            .package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.0.0")
        ],
        targets: [
            .target(
                name: "MyProject",
                dependencies: ["Alamofire"]),
            .testTarget(
                name: "MyProjectTests",
                dependencies: ["Alamofire"]),
            ]
    )

这是我的main.swift´file

import Foundation
import Alamofire

if let accountSID = ProcessInfo.processInfo.environment["MY_PERSONAL_SID"],
    let authToken = ProcessInfo.processInfo.environment["MY_PERSONAL_AUTHTOKEN"] {

    let url = "https://api.twilio.com/2010-04-01/Accounts/\(accountSID)/Messages"
    let parameters = ["From": "MY_TWILIONUMBER", "To": "MY_PERSONAL_NUMBER", "Body": "Hello from Swift!"]

    Alamofire.request(url, method: .post, parameters: parameters)
        .authenticate(user: accountSID, password: authToken)
        .responseJSON { response in
            debugPrint(response)
    }

    RunLoop.main.run()
}

当我运行swift build && ./.build/debug/MyProject时,它似乎运行良好,但没有收到任何消息。

我不确定自己做错了什么,但是我有一些疑问:

  1. 这两个命令:

    export TWILIO_ACCOUNT_SID='YOUR_ACCOUNT_SID'
     export TWILIO_AUTH_TOKEN='YOUR_AUTH_TOKEN'
    我可以从任何地方在终端中运行它们吗?还是应该在特定的文件夹中运行它们? (我在运行命令时将SIDTOKEN更改为我的个人密码)

  2. Package.swift应该位于我的Xcode项目的基本文件夹中吗?

  3. main.swift应该位于.../MyProject/Sources/MyProject/main.swift中吗?

  4. 命令swift build && ./.build/debug/MyProject
    在指南中,“ main.swift”的解释是:

  

使用此命令运行它,您应该会收到一条短信!

它们对run it with this command意味着特殊之处吗?还是我可以从任何地方从终端运行命令?

1 个答案:

答案 0 :(得分:2)

这里是Twilio开发人员的传播者。

跑步时

export TWILIO_ACCOUNT_SID='YOUR_ACCOUNT_SID'
export TWILIO_AUTH_TOKEN='YOUR_AUTH_TOKEN'

您需要在最终从中运行应用程序的同一窗口中的终端中执行此操作。您可以阅读有关setting environment variables in this blog post的更多信息。

在您的main.swift文件中,以下行:

if let accountSID = ProcessInfo.processInfo.environment["MY_PERSONAL_SID"],
    let authToken = ProcessInfo.processInfo.environment["MY_PERSONAL_AUTHTOKEN"] {

我相信您的程序正在运行,但未发送任何内容,因为您正试图从名为MY_PERSONAL_SIDMY_PERSONAL_AUTHTOKEN的环境中分配变量。如果您按照描述导出环境变量,则此行应为:

if let accountSID = ProcessInfo.processInfo.environment["TWILIO_ACCOUNT_SID"],
    let authToken = ProcessInfo.processInfo.environment["TWILIO_AUTH_TOKEN"] {

让我知道是否有帮助。