我正在考虑使用Twilio API编写一个呼叫筛选应用程序。
当有来电时,我的应用程序会根据各种规则决定是否拨打我的电话或将来电者发送到语音信箱。
所以调用会像:
┌─────────┐
┌─▶│Voicemail│
┌──────┐ ┌─────────────┐ ┌──────┐ │ └─────────┘
│Caller│─▶│Twilio Number│─▶│My App│─┤
└──────┘ └─────────────┘ └──────┘ │ ┌─────────┐
depending└─▶│My Phone │
on rules... └─────────┘
理想情况下,我可以做这两件事:
对于#1,我可以要求我的运营商阻止所有其他呼叫,或者可以写一些Android代码在我的手机上运行,但无论如何,我需要知道"这来了来自我的应用程序。"
这两件事都有可能吗?例如,一个电话是否有元数据说明它从哪里转发,或者来电显示是我能得到的唯一信息?
我是否可以同时传递原始来电显示和通过我的应用进行通话的事实?
答案 0 :(得分:0)
Twilio开发者传道者在这里。
我将从#2开始,因为这是最简单的。 <Dial>
的默认行为(用于将对Twilio号码发出的呼叫转发到您自己的号码)是将呼叫者ID作为原始呼叫者ID的呼叫者ID。所以你应该在Twilio中看到这种情况。
对于#1,我无法通过Twilio作为呼叫的一部分发送元数据,然后在电话级别访问该元数据以阻止呼叫。
我不知道你是否可以在运营商层面做到这一点。我猜想Twilio发送了运营商可以寻找的特定SIP头,但我没有更多的信息。
你可以和Twilio一起,至少让自己知道一个电话是来自你的应用而不是直接来自你的号码。您可以使用所谓的"whisper"。这允许您在连接呼叫之前给自己一条消息,说“这是来自您应用的呼叫”。您可以使用<Dial>
使用<Number>
noun and setting a url
attribute将来电转接到您的号码来实现此目的。 url
应指向另一个返回带有您的消息的TwiML的端点,您可以使用<Say>
。
让我知道这是否有帮助。