最简单的拨号方案

使用模式匹配和通道变量可以构建一个最简单的最通用的拨号方案。

如下:

exten => _XXXX,1,Dial(SIP/${EXTEN})

exten => _XXXX,2,Hangup()


模式匹配规则:

 模式总是用一个下划线 _开始,它告诉 Asterisk 要做模式匹配,这不是一个extension 名字。这意味着不能使用下划线作为 extension 名字的开始字符。

在下划线之后,可以使用一个或者多个下面列出来的字符:
X
匹配 0-9 的任何数字。
Z
匹配 1 - 9 的任何数字。
N
匹配 2 - 9 的任何数字。

在我的拨号方案里面,都是4位的任意数字,因此我用_XXXX来表示号码。


通道变量:

一旦拨了某个 extension, Asterisk 会把通道变量${EXTEN}设置为所拨的数字。

另外通道变量可以通过两种方式来截取。

1. 从头截去x位     ${EXTEN:x}

2. 从尾截x位     ${EXTEN:-x}

因此我们的拨号方案可以象上面那样写的如此简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个简单的实现方案,使用一个字符串数组来存储联系人的名字和对应的手机号码: ```cpp #include <iostream> #include <string> using namespace std; const int MAX_CONTACTS = 100; struct Contact { string name; string phone; }; Contact contacts[MAX_CONTACTS]; int numContacts = 0; void addContact(string name, string phone) { contacts[numContacts].name = name; contacts[numContacts].phone = phone; numContacts++; } string findPhone(string name) { for (int i = 0; i < numContacts; i++) { if (contacts[i].name == name) { return contacts[i].phone; } } return ""; } int main() { // 添加联系人 addContact("张三", "13811112222"); addContact("李四", "13911113333"); addContact("王五", "13611114444"); // 打电话 string input; cout << "请输入要拨打的号码或联系人姓名:" << endl; cin >> input; string phone = findPhone(input); if (phone != "") { cout << "正在拨打 " << phone << " ..." << endl; } else { cout << "查无此人" << endl; } return 0; } ``` 这个程序首先定义了一个 Contact 结构体,其中包含了联系人的名字和手机号码。然后定义了一个 `contacts` 数组,用来存放所有联系人的信息,以及一个 `numContacts` 变量,记录当前有多少个联系人。 `addContact` 函数用来添加联系人信息,接受两个参数,分别是联系人的名字和手机号码。它会将新的联系人信息存储在 `contacts` 数组中,并将 `numContacts` 加 1。 `findPhone` 函数用来查找指定联系人的手机号码,接受一个参数,即要查找的联系人的名字。它会遍历 `contacts` 数组,找到第一个名字匹配的联系人,并返回该联系人的手机号码。如果找不到匹配的联系人,则返回空字符串。 主函数中先添加了三个联系人的信息,然后通过输入来获取要拨打的号码或联系人姓名。接着调用 `findPhone` 函数来查找对应的手机号码,如果找到了就输出正在拨打的信息,否则输出查无此人。 ### 回答2: 要实现这个功能,我将使用一个string数组来存储人名和对应的手机号码。每个人名和手机号码将以一对元素的形式存储在数组中。为了简化问题,我只考虑存储人名的情况。 首先,我定义一个能够存储一定数量人名的string数组,例如可以存储10个人名。我们可以将这个数组命名为phoneBook。 接下来,我将写一个函数addContact,用于向通讯录中添加人名和手机号码。此函数将接收两个参数:人名和手机号码。首先,它需要遍历phoneBook数组,查找是否存在相同的人名。如果存在相同的人名,则需要更新对应的手机号码。如果没有找到相同的人名,则需要将新的人名和手机号码添加到数组中。 然后,我将写一个函数searchContact,用于通过人名查询对应的手机号码。此函数将接收一个参数:待查询的人名。它将遍历phoneBook数组,查找是否存在相同的人名。如果找到相同的人名,则返回对应的手机号码。如果没有找到相同的人名,则返回"查无此人"。 最后,我将写一个函数makeCall,用于拨打电话。此函数将接收一个参数:要拨打的人名。它将调用searchContact函数,通过人名查询对应的手机号码。如果找到了人名,则开始拨打电话。如果找不到人名,则返回"查无此人"。 使用这些函数,我们可以实现一个简单的通讯录功能,能够添加人名和手机号码,查询通讯录,以及直接拨打电话。需要注意的是,这里的实现比较简化,仅考虑了人名和手机号码的存储和查询,没有考虑其他功能和异常处理。 ### 回答3: 实现这个功能可以使用一个字符串数组来存储人名,每个人名对应数组中的一个位置。当需要打电话时,首先输入要查找的人名,可以通过遍历数组来查找是否存在该人名。存在则打印出来,说明已找到该人名,可以进行拨号,不存在则打印"查无此人"。 具体实现如下: ```python def create_phonebook(): phonebook = [] # 定义通讯录数组 return phonebook def add_contact(phonebook, name): phonebook.append(name) # 添加联系人到通讯录 def make_call(phonebook): name = input("请输入要查找的人名:") # 输入要查找的人名 found = False # 标志位,判断是否找到联系人 for contact in phonebook: # 遍历通讯录数组 if name == contact: print("找到联系人:%s" % name) found = True break if not found: print("查无此人") def main(): phonebook = create_phonebook() # 创建通讯录 add_contact(phonebook, "张三") # 添加联系人 add_contact(phonebook, "李四") make_call(phonebook) # 进行拨号操作 main() ``` 需要注意的是,该程序只是一个简化版本,存储的仅是名字,并没有存储对应的手机号码。如需完善该功能,可以构建一个更复杂的数据结构,如字典,将名字和手机号码进行对应存储。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值