它可以使用它,这是Tapi的好开始... 我想创建一个应用程序,该应用程序自动接听/记录传入的呼叫,并致电某人记录的消息. 想要在.net中(asp.net或c#桌面没有问题). 解决方案 Microsoft似乎不太可能从Windows 7中删除Tapi,因此最终这取决于您使用的电话系统和驱动程序. Avaya和Cisco通常会提供好的驱动力.我们在工作中有一个Avaya电话系统,一些使用Windows 7的人没有问题. 几乎没有支持使用托管代码的tapi,但是可以使用包装纸或第三方组件(请参阅 这篇文章可能会指向您在正确的方向. 其他解决方案 我也尝试使用Tapi,C#和64位Windows 7.我写了一个非常小的程序,该程序使用( codeplex的itapi汇编). theTextBox.Clear(); foreach (TAddress addr in tapi.Addresses){ theTextBox.Text += addr.
以下是关于 telephony 的编程技术问答
我一直在了解有关WebRTC,SIP和PSTN的更多信息,以及它们如何一起工作,尤其是在浏览器中接收电话的能力.我已经在Twilio的网站上度过了一些时间,我喜欢他们能够让您接到PSTN的电话的方式. 我想了解他们如何能够让某人拨打普通的PSTN电话号码,并将呼叫定向到Web浏览器. 我碰到这个问题我仍然缺少一些东西. 要澄清我的问题,让我们采取以下情况: 第一部分 让我们假设我住在伦敦,拥有自己的SIP-Server和SIP帐户,并拥有一个PSTN Phone-number,并且该号码已映射到SIP帐户.现在,我希望能够在浏览器中接收来自世界各地的电话.当人们拨打PSTN号码时,电话通过我的电信提供商.那么电话如何到我的浏览器?在将呼叫引导到浏览器之前,我是否必须将SIP服务器连接到电信提供商系统? 这是否意味着能够将呼叫引向浏览器电信公司系统必须知道,对于此特定的PSTN编号,该呼叫必须到我的SIP服务器或类似的东西? 我想知道通话发生的所有
我手头上有一个新项目,这很复杂,因为我不知道它的域名. 我的要求是,我们有电话号码列表,从此列表中,我需要检查哪个电话号码/真实. 您将如何编程电话或IVR系统以自动拨打此列表上的电话号码并自动检测是否是有效的电话号码?我想使用C#编程此解决方案. 解决方案 用"请勿调用列表"搁置法律问题,确定手机是否有效的唯一方法是聆听运营商在当时发行的特殊信息音调(SIT)电话被禁用.为了自动化这一点,您可以使用呼叫进度检测或调用进度分析(CPA)的东西.您可以使用一些IVR系统和称为 call Control XML(ccxml)的开放标准进行此操作. Voxeo有一个IVR平台,它具有出色的CPA,您可以尝试在其托管环境中免费.请查看他们的出口通话中的文档呼叫并检测坐姿.坐姿上有一个警告是,有些人在手机上放了反溶设备,这基本上会提出坐姿,以欺骗自动化系统. 这是一篇文章这描述了如何使用名为 VoiceModel 在C#和ASP.NET MVC中开发主动通知系统的开源项目.
是否可以将Android手机用作简单的GSM网关? 手机将使用(最好是)Android内置SIP堆栈接收VoIP调用,启动GSM调用,并以两种方式桥接音频.一个呼叫终止后,另一个电话也结束. 我该如何解决这个问题?我较早的尝试未能在连接之间桥接音频.我错过了SDK支持的方法吗?还是我需要实施某种解决方法? 解决方案 您要问的问题有两个问题: 如何获得蜂窝呼叫的传入音频流. 如何进入蜂窝电话的传出音频流. 记录蜂窝音频 查看此链接可以在上进行一些设备.他们使用的API是 播放音频到蜂窝电话 这很可能是最棘手的位,因为没有Google API可以直接在传出的音频流中获得.我只能想到两种可能的方法. 重写Android Dialer应用程序,该应用程序恰好是Android中的"电话堆栈".直接(仅)访问序列端口链接到蜂窝无线电堆栈,您 May 都可以进入传出音频流.这需要您扎根设备才能执行此操作. 打开扬声器电话模式,然后通过扬声器播放音频,这
我在应用程序中完成了SIM/手机号码验证(与Whats App相同).类似: 发送消息部分: SmsManager sm = SmsManager.getDefault(); sm.sendTextMessage(mobileNumber, null, "Welcome", null, null); 通过Broadcastreceiver检查相同/当前设备接收的消息: private class SMSReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { if(intent.getAction() != null && intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){ B
对于呼叫评级系统,我试图将电话持续时间分成不同关税期限的子策略.调用存储在SQL Server数据库中,并具有启动时间和总持续时间.夜晚(0000-0800),峰值(0800-1900)和OffPeak(1900-235959)期间的价格不同. 例如: 电话从18:50:00开始,持续时间为1000秒.这将使通话在19:06:40结束,使其在峰值赛中10分钟/600秒,在非高峰关税中400秒. 显然,呼叫可以在无限的时期内包装(我们不执行最大呼叫持续时间).持续> 24小时的电话可以包裹所有3个时期,从高峰开始,穿过夜间,夜间和回到峰值关税. 当前,我们正在使用VB中的递归计算不同的关税周期.我们计算了在呼叫开始的相同关税期间进行的电话,相应地更改呼叫的启动时间和持续时间,然后重复此过程,直到达到通话的完整持续时间(PeakDuration + PeakDuration + OffPeakDuration + NightDuration ====呼叫). 关于这个
我想根据是否存在SIM硬件在应用程序中禁用与呼叫和SMS相关的功能.现在,初学者的方法将使用: 检查电话类型 if (telephonyManager1.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE) 如果为true,则受支持. 一切都很好,直到我遇到Sony Tablet S,该平板电脑仅具有用于数据和消息传递的SIM卡支持.没有语音支持.因此,对于此设备,我需要仅禁用呼叫功能,但继续使用SMS支持. 索尼平板电脑返回telephonyManager.phone_type_none,因此我可以使用上述方法. 另外, telephonyManager1.getSimState(); 返回1 I.SIM_STATE_ABSENT,在HTC Flyer的情况下也不支持SIM硬件本身. 那么,我有什么办法知道是否在那里(插入SIM卡)? 解决方案 使用 PackageManager pm = t
我正在使用以下函数获取设备网络的allcellinfo,并且我现在将值作为字符串作为字符串,我需要对其进行解析,以获取CellsignalStrenthlte数据,如何实现它 //代码 TelephonyManager tm = (TelephonyManager) Context.getSystemService(mContext.TELEPHONY_SERVICE); List cellInfos = tm.getAllCellInfo(); String data = cellInfos.get(0).toString(); Log.d("Info ", " "+data); 结果是 CellInfoLte:{mRegistered=YES mTimeStampType=oem_ril mTimeStamp=207387894126206ns CellIdentityLte:{ mMcc=405 mMnc=869 mCi=29716
我在清单中有一份许可: 检查电话是否使用的代码可能会开始对平板电脑等设备(无法接听电话的设备)的安全例外.,我做了这种方法来检查是否检查设备可以使用TelephonyManager: private boolean doesUserHavePermission(){ PackageManager pm = getPackageManager(); final boolean deviceHasPhone = pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY); return deviceHasPhone; } 以及我实际检查是否接到电话的代码中,我提出了一个if语句,以查看设备是否有电话:
现在的项目中的情况非常令人沮丧.我被困在某一时刻.我想做一个简单的任务如下 当有人更改SIM卡时,检测此事件并检查此新的SIM卡是否与以前的SIM相同,并采取相应的操作. 我不想通过计时器定期检查SIM_STATE. Android通知SIM的状态变化吗?如果是,请让我知道我可以检测到SIM卡更改? 我之前也问过这个问题,但是我没有得到扎实的答案.这似乎是一个非常重要的API,没有人关心它.如果有的话,请给我一些代码段... 我被困在这里,在Android电话服务文档中,我无法理解任何内容...如果有人可以为上述提供一些代码,这将非常有帮助. 解决方案 是的,您只能在启动时间接收器重新启动时才执行,因此我们必须在应用程序中注册启动时间接收器.当用户更改它时,我们可以分析它.
我们想存储10个数字手机号码,即999999999.应该是数字或字符串数据类型吗?我们不想对此进行任何计算或操纵操作 哪个更好的内存和性能? 解决方案 itu-t建议e.164 您说您需要3位数字来才国家代码和最多15位在国家拨号计划中的目录号码. ,许多人添加了一些标点符号.例如: +1.212.555.1212是北美号码.也可以渲染 (212)555-1212在北美中心的应用中. 32个字符的文本应在全球范围内完成窍门. 不要使用数字,否则您会很抱歉.我是:两件事. 为一家公司损失了一些欧洲业务,因为我们假设所有电话号码均为 nanp-complemin - 数字. 电子表格导出了科学符号的数字2.12555E+09几乎和siri告诉我的一样愚蠢. 电话目录号不是数字数据类型.请看一下:虚假的程序员相信电话号码. 其他解决方案 必须是string,因为电话号码将超过int甚至long的限制.因此,对于处理这些方案stri
我是Android SMS的新手,我正在尝试研究它.因此,我正在尝试制作一个始终在后台工作的Android应用程序,当我收到带有" Hello"内容的短信(有人将" Hello"发送给我的电话给我的电话)时,音乐将播放. 我在互联网上进行了搜索,并建立了一个在AVD上工作的项目,但是当我在手机上测试它时,它不起作用: import info.kfsoft.android.R.raw; import android.app.Notification; import android.app.NotificationManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.media.AudioManager; import android.media.MediaPlayer; imp
对于API 19+,拥有默认应用程序可用,因此可能会发生默认应用程序的空检查.我的问题是,一旦使用setPackage()将意图设置为默认应用程序,是否仍然值得使用分辨率()null检查意图或那个冗余或过度操作? if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { String defaultSMSPackageName = Telephony.Sms.getDefaultSmsPackage(this); final Intent smsIntent = new Intent(Intent.ACTION_SENDTO); if (defaultSMSPackageName != null) { smsIntent.setPackage(defaultSMSPackageName); **if (smsIntent.resolveActivity(getP
简单的问题: 如何使用假呼叫者ID来使用Twilio或任何其他提供商发送短信? 我正在使用 twilio rest api(c#). 编辑: 我找到了这家提供这一未来的公司,但它们太贵了: http://www.smsmessmessagesender.com/smsapi 有人知道更好的选择吗? 解决方案 在大多数情况下,这是载体的东西.一般而言,在美国,任何SMS流量都必须来自您"自己"的数字.对于API,这将是您购买的一个或多个虚拟数字. 在美国以外 - 同样,一般而言 - 您可以使用的东西有更多的自由.但是,不同的API可能会或可能不会选择暴露这一点.例如,使用 nexmo 您可以将发件人ID设置为您想要的任何内容,并使用所支持的国家/运营商将发件人ID设置为国家/运营商. 关于哪些国家/航空公司支持动态发件人ID,此 nexmo country Faq 可能会有所帮助(即使您使用了其他API). (免责声明:我为nexmo做一些
我正在尝试检测哪个SIM卡已在Broadcastreceiver中收到了双或三重SIM支持电话的传入消息. 注意: 所有SIM卡都有相同的SMSC. 解决方案 看来,与键"simSlot". public void onReceive(Context context, Intent intent) { ... int simSlot = intent.getIntExtra("simSlot", -1); ... } 我也找不到有关此信息的任何信息,因此我不确定这是多么通用,或者在哪种Android版本中可能引入了这一点.我通过在设备上的接收器中倾倒所有的意图上的所有附加物来找到它. 其他解决方案 这项用于联想手机的联想手机的工作 public void onReceive(Context context, Intent intent) { ... int simId = int
我注意到我从公司那里收到的某些SMS消息带有"发件人名称".例如.就在今天,我收到了我以前从未使用过的号码(不是我的联系人)的短信,但是发件人名称显示为" Adobe".我也从其他公司那里得到了.例如Facebook,Google&Banking. 它类似于电子邮件服务器的工作原理? (在发送消息之前,您告诉服务器您是谁")是载体的电池塔是这样的吗? 我想我想知道该服务的工作方式以及如何工作?(即.数字'并用字符代替它?) (希望这是问这个问题的正确地方...) 解决方案 地图协议(用于发送SMS消息的映射协议)允许指定电话号码或字母数字编号为发送者. afaik不能从您的手机设置,在该手机中,发件人号码将始终是您的公共电话号码,但是SMS中心可以在其他接口上发送此类消息,例如银行和您提到的公司(通常使用SMPP)或UCP ProtoColl). 请注意,某些电信公司不允许在其他地方的消息中使用此类发件人地址,而是发送给客户(或者他们不允许每个人
手机号码将在我的Android应用程序中的注册页面上以可疑的方式输入.我如何检查用户输入他/她的手机号码而不是其他人? 我已经尝试过: TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); mPhoneNumber = tMgr.getLine1Number(); 并将此变量与EditText的文本进行比较.但是MphoneNumber在我的情况下返回 null .还有其他选择吗?如何解决这个问题? 任何帮助都是可观的. 我尝试了以下操作:检查源代码: public class MainActivity extends Activity{ Button submit; EditText contact; String phNo; ProgressDialog
我有一个应用程序,需要临时访问设备的SMS.在Kitkat及以上,此访问仅授予默认SMS应用程序,因此我使用: Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT); intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, getPackageName()); startActivity(intent); 这会提出一个对话框,询问用户是否让我的应用程序成为默认的SMS应用程序.到目前为止,一切都很好.问题是,一旦我的应用程序完成操作,我就必须再次询问用户,他们是否想将以前的应用程序还原为默认SMS应用程序. 我希望通过让我的应用程序告诉Android OS不再希望成为默认的SMS应用程序来避免第二个对话框,以便以前的应用程序可以自动接管.我知道Android支持这一点,因为如果我在默认的SMS应用程序时卸载我的应用程序,An
我正在关注代码: @Override protected void onResume() { super.onResume(); Log.i("MainAcitvity", "On Resume Called"); // Only do these checks/changes on KitKat+, the "mSetDefaultSmsLayout" has its visibility // set to "gone" in the xml layout so it won't show at all on earlier Android versions. final String myPackageName = getPackageName(); if (Utility.hasKitKat()) { if (Utility.isDefaultSmsApp(this)) {
我有一个Java应用程序(使用秋千),该应用程序必须在接到呼叫时显示客户的详细信息. 是否可以将电话号码从软电话(SIP)传递给我的Java Swing应用程序,以便显示详细信息? 是否有其他方法或程序可以执行此操作? 解决方案 为此,您需要在Java应用程序中使用Linphone SDK.您可能需要从Java应用程序中显示软电话,或使用SDK使用Linphone的SDK在应用程序中接听电话. 其他解决方案 您有很多选择: 使用tropo.com在来电期间发送回调HTTP请求. 使用诸如FusionPBX之类的PBX,该PBX可以从数字中查找名称,然后将其插入SIP消息,然后将其发送到手机. 如果您的手机支持Syslog,您也可以以这种方式点击信息.