中国移动10086猫吃卡事件

今天和同事聊天又一次聊到和客服聊天的事,所以我就想到这个事了。听完当是就笑翻了,只为开心,现在转载到这里,供大家娱乐,还有录音,大家可以在baidu搜一下!

移动用户:你好,我想咨询一个问题啊
服务小姐:请讲
移动用户:我有一张卡,被我家猫给吃了,拿出来能不能用了
服务小姐:那您只能是插在手机上试一下,如果不行的话,只能是去移动营业厅换卡啦
移动用户:不是,你的事先告诉我能不能用,能用的话我就把我家猫宰了拿卡,要不能用的话,就浪费我家一只猫,对吧
服务小姐:您好,这样的话建议您还是不要宰它了,那您就拿上您的身份证去移动营业厅补上一张卡就可以
移动用户:问题是我的卡是150办的,我家那只猫30块钱买的嘛
服务小姐:可是您补一张卡的话是40块钱
移动用户:补卡?
服务小姐:对,号不变
移动用户:号不变啊
服务小姐:去移动营业厅拿上您的身份证,再补原来那个号就可以了,重新换一张卡,那张卡就不能用了
移动用户:那你说我家那个猫会不会有什么不良反应阿
服务小姐:您好,这个我就不太清楚了,那需要您领着猫去看病的
移动用户:那你帮问问同事呀
服务小姐:您好,很抱歉,您现在拨的是1860手机业务咨询台,至于猫怎么样的话咱们这边是给您处理不了的
移动用户:我家这个猫他叫M-Zone人
服务小姐:对,那、那也不行的
移动用户:那咋不行的吗,我都起了动感地带的名字了
服务小姐:即使是他叫周杰伦的话也没有办法来帮您处理的,那只能是您自己来去看一下了,那您卡出现问题了我们移动营业厅和1860可以帮您解决,那猫具体怎么样话我们肯定没有办法来帮您解决的
移动用户:问题他是移动的卡
服务小姐:(深吸了一口气)您好先生您觉得这样有意义吗?
移动用户:不是,我就是特奇怪你是啥意思啊
服务小姐:没有什么,您好,我没有什么意思的,您觉得您有什么意思吗?那您就说了这个猫具体……
移动用户:别别别着急慢慢说
服务小姐:您说这个猫……
移动用户:说累了喝口水
服务小姐:您好,首先您这个猫具体怎么样咱们这点肯定为您处理不了的
移动用户:我知道你处理不了,我这是让你给我点建议,我这样该怎么处理啊
服务小姐:您好我现在建议您就是说是可以拿着您的身份证去移动营业厅办理补卡就可以了
移动用户:那然后还要考虑猫的呀
服务小姐:那猫就没有办法了,我这边就……
移动用户:怎么没有办法,生命啊那是一条
服务小姐:您好那我这边就帮不了您了,那您带上它去宠物医院看病还是什么,那就是您自己以后来处理的事情了
移动用户:那你要不把周杰伦电话号码告诉我,我给他打电话
服务小姐:您好,您认为1860可能有他的电话吗?
移动用户:你们这不是合作伙伴吗?
服务小姐:可我们这边也没有他的电话的
移动用户:肯定有
服务小姐:您好,很抱歉,没有
移动用户:骗人啦,你长这么漂亮的姑娘还骗人啦
服务小姐:请问您还有其他业务要咨询吗?
移动用户:有
服务小姐:请讲
移动用户:我那个猫怎么办啊
服务小姐:您好先生,如果您重复问我这个问题的话,现在我没有办法来回答您的
移动用户:那我不重复了,那我那张卡怎么办啊
服务小姐:去移动营业厅办理补卡就可以的
移动用户:拿上猫让他给我解剖了拿出卡来
服务小姐:(深吸一口气)
移动用户:是吗?
[阅读全文...]

Erlang入门(五)——补遗

暂时搞不到《Programming Erlang》,最近就一直在看Erlang自带的例子和Reference Manual。基础语法方面有一些过去遗漏或者没有注意的,断断续续仅记于此。

1。Erlang的保留字有:
after and andalso band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse query receive rem try when xor

基本都是些用于逻辑运算、位运算以及特殊表达式的符号

2.Erlang的类型,除了在前面入门一提到的类型外,还包括:
1)Binary,用于表示某段未知类型的内存区域
比如:
1> < <10,20>>.
< <10,20>>
2> < <"ABC">>.
< <65,66,67>>

2)Reference,通过调用mk_ref/0产生的运行时的unique term

3)String,字符串,Erlang中的字符串用双引号包括起来,其实也是list。编译时期,两个邻近的字符串将被连接起来,比如”string” “42″ 等价于 “string42″

4)Record,记录类型,与c语言中的struct类似,模块可以通过-record属性声明,比如:
-module(person).
-export([new/2]).
-record(person, {name, age}).
new(Name, Age) ->
#person{name=Name, age=Age}.
1> person:new(dennis, 44).
{person,dennis,44}
在编译后其实已经被转化为tuple。可以通过Name#person.name来访问Name Record的name属性。

3.模块的预定义属性:
-module(Module). 声明模块名称,必须与文件名相同
-export(Functions). 指定向外界导出的函数列表
-import(Module,Functions). 引入函数,引入的函数可以被当作本地定义的函数使用
-compile(Options). 设置编译选项,比如export_all
-vsn(Vsn). 模块版本,设置了此项,可以通过beam_lib:version/1 获取此项信息
可以通过-include和-include_lib来包含文件,两者的区别是include-lib不能通过绝对路径查找文件,而是在你当前Erlang的lib目录进行查找。
[阅读全文...]

Erlang入门(四)——错误处理和鲁棒性

任何一门语言都有自己的错误处理机制,Erlang也不例外,语法错误编译器可以帮你指出,而逻辑错误和运行时错误就只有靠程序员利用Erlang提供的机制来妥善处理,放置程序的崩溃。
Erlang的机制有:
1)监控某个表达式的执行
2)监控其他进程的行为
3)捕捉未定义函数执行错误等

一、catch和throw语句
调用某个会产生错误的表达式会导致调用进程的非正常退出,比如错误的模式匹配(2=3),这种情况下可以用catch语句:
catch expression
试看一个例子,一个函数foo:
foo(1) ->
hello;
foo(2) ->
throw({myerror, abc});
foo(3) ->
tuple_to_list(a);
foo(4) ->
exit({myExit, 222}).

当没有使用catch的时候,假设有一个标识符为Pid的进程调用函数foo(在一个模块中),那么:
foo(1) – 返回hello
foo(2) – 语句throw({myerror, abc})执行,因为我们没有在一个catch中调用foo(2),因此进程Pid将因为错误而终止。

foo(3) – tuple_to_list将一个元组转化为列表,因为a不是元组,因此进程Pid同样因为错误而终止

foo(4) – 因为没有使用catch,因此foo(4)调用了exit函数将使进程Pid终止,{myExit, 222} 参数用于说明退出的原因。

foo(5) – 进程Pid将因为foo(5)的调用而终止,因为没有和foo(5)匹配的函数foo/1。
[阅读全文...]