我正在考虑使用Twilio API编写一个呼叫筛选应用程序。
当有来电时,我的应用程序会根据各种规则决定是给我的电话打电话还是将来电者发送到语音信箱。
所以调用会像:
┌─────────┐
┌─▶│Voicemail│
┌──────┐ ┌─────────────┐ ┌──────┐ │ └─────────┘
│Caller│─▶│Twilio Number│─▶│My App│─┤
└──────┘ └─────────────┘ └──────┘ │ ┌─────────┐
depending└─▶│My Phone │
on rules... └─────────┘
理想情况下,我可以做这两件事:
对于#1,我可以要求我的运营商阻止所有其他呼叫,或者可以写一些Android代码在我的手机上运行,但无论如何,我需要知道“这来自我的应用程序。”
这两件事都有可能吗?例如,一个电话可以有元数据说明它从哪里转发,或者来电显示是我能得到的唯一信息吗?
我可以同时传递原始来电显示和通过我的应用来电话的事实吗?
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>
。
如果这有帮助,请告诉我。