高分求救语音问题(有点意思)???
就是有这样一个要求:在页面里假设有5个按钮A,B,C,D,E,浏览者进去以后可以选择跟这5个人进行语音聊天,如果浏览者1选择跟B语音聊天,测B的状态设置为不可选,其他浏览者不能跟他进行聊天,这个1对1的语音聊天之间不能互相干扰,(如果能做到,还可以对A,B,C,D,E进行类型设置,比如A只能进行1对1的语音聊天,B可以进行1对多的聊天,类似于语音聊天室,那最好不过了)。
这个功能有点像打电话,如某公司有5部电话机A,B,C,D,E,客户1有事要跟某公司联系,打了电话B,那电话B的状态为忙,其他客户不能打进,当通话完毕电话B又恢复为允许接听状态,当然,在打电话期间,互相之间不会干扰
在这儿,5个按钮我们可以假设为5个管理员用户。
请问这个功能怎么做,有没有相关的资料、代码,小弟第一次做语音聊天方面的东东,要破处了,请有这方面经验的大哥大姐大叔大爷指教,谢谢!!!!!!!!!! 小弟现在在看mechat方面的资料。
分没问题,解决问题是根本,可另外开帖送分!!
问题点数:100、回复次数:48Top
1 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-03 00:48:51 得分 15
用Agent+ASP技术制作语音聊天室
--------------------以下为程序内容,按文章中出现的顺序分块排序
<!--定义"AgentControl"-->
<OBJECT classid=clsid:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F
codeBase=#VERSION=2,0,0,0 id=Agent>
</OBJECT>
<!--定义L&H TruVoice Text-To-Speech American English -->
<OBJECT classid=clsid:B8F2846E-CE36-11D0-AC83-00C04FD97575
codeBase=#VERSION=6,0,0,0 id=TruVoice width="14" height="14">
</OBJECT>
______________________________________________________________
尝试从微软Agent角色目录中装载
Set LoadRequestUNC = Agent.Characters.Load ("Peedy", "Peedy.acs")
If LoadRequestUNC.Status <> 0 Then
' 如果失败便尝试从微软服务器下载
Set LoadRequestURL = Agent.Characters.Load ("Peedy", "http://agent.microsoft.com/agent2/chars/peedy/peedy.acf")
Else
' 现在产生一个Peedy实例
Set Peedy = Agent.Characters("Peedy")
End If
_____________________________________________________________
<HTML>
<BODY>
<h3 align="center"><font color="#0000FF">Welcome to My Chatroom!</font></h3>
<FORM method="POST" action="default.asp">
<p align="center">Your name please:
<input type="text" name="txtUsername" size="20">
<input type="submit" value="OK" name="btnOK"></p>
</FORM>
<p align="center"><a href="download.htm">Click here to go to download page.</a></p>
</BODY>
</HTML>
_______________________________________________________________________
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart
Application("message")="" '发言内容
Application("expression")="" '表情
Application("sender")="" '发言者ID
Application("globalid")=0 '发言总序号
End Sub
</SCRIPT>
_______________________________________________________________________
<%
Session("username") = Server.HtmlEncode(Request.Form("txtUsername"))
Session("personalid")=0
%>
<HTML>
<HEAD>
<TITLE>Welcome to My Chatroom!</TITLE>
</HEAD>
<frameset border=0 frameSpacing=0 cols="98,*" frameBorder=0>
<frame name="agent" src="agent.asp">
<frameset rows="196,68,*">
<frame name="display" src="display.asp">
<frame name="refresh" src="refresh.asp">
<frame name="message" src="message.asp">
</frameset>
</frameset>
<frameset>
</frameset>
</HTML>
________________________________________________________________
<HTML>
<BODY BGCOLOR="#006699" TEXT="#FFFFFF">
<!--定义"AgentControl"-->
<OBJECT classid=clsid:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F
codeBase=#VERSION=2,0,0,0 id=Agent>
</OBJECT>
<!--定义L&H TruVoice Text-To-Speech American English -->
<OBJECT classid=clsid:B8F2846E-CE36-11D0-AC83-00C04FD97575
codeBase=#VERSION=6,0,0,0 id=TruVoice width="14" height="14">
</OBJECT>
Top
2 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-03 00:49:07 得分 0
<SCRIPT language=VBScript>
Dim Peedy
Dim LoadRequestUNC
Dim LoadRequestURL
Dim GetShowAnimation
Sub Window_OnLoad
LoadCharacter
' 设置Agent的语言代号
Peedy.LanguageID = &H0409
' 让Peedy出现
Peedy.MoveTo window.event.screenX-100,window.event.screenY-100
Peedy.Show
' 好啦,Peedy可以开口说话了
Peedy.Speak "Welcome to my chatroom!"
Peedy.Play "Greet"
End Sub
Sub Agent_RequestComplete(ByVal Request)
' 如果是从微软服务器装载ACF角色的请求结束
If Request = LoadRequestURL Then
' 如果申请下载失败
If Request.Status = 1 Then
Msgbox "无法从服务器下载Peedy,可能服务器太忙。"
Exit Sub
' 如果成功
ElseIf Request.Status = 0 Then
' 产生一个实例
Set Peedy = Agent.Characters("Peedy")
' 预取Peedy的部分动画效果
Set GetShowAnimation = Peedy.Get ("state", "showing, speaking")
Peedy.Get "animation", "Blink, Greet, Pleased, Explain, Think, GestureRight,Idle1_1,Idle2_2, Announce, Uncertain", False
End If
' 如果是请求预取动画效果的请求结束
ElseIf Request = GetShowAnimation Then
' 如果失败
If Request.Status = 1 Then
Msgbox "下载动画的请求失败,可能服务器太忙。"
Exit Sub
End If
End If
End Sub
' 装载Agent角色
Sub LoadCharacter
On Error Resume Next
' 尝试从微软Agent角色目录中装载
Set LoadRequestUNC = Agent.Characters.Load ("Peedy", "Peedy.acs")
If LoadRequestUNC.Status <> 0 Then
' 如果失败便尝试从微软服务器下载
Set LoadRequestURL = Agent.Characters.Load ("Peedy", "http://agent.microsoft.com/agent2/chars/peedy/peedy.acf")
Else
' 产生一个Peedy实例
Set Peedy = Agent.Characters("Peedy")
End If
End Sub
</SCRIPT>
</BODY>
</HTML>
________________________________________________________________
<HTML>
<HEAD>
<META HTTP-EQUIV="REFRESH" CONTENT=3 URL="refresh.asp">
</HEAD>
<BODY>
<SCRIPT language=VBScript>
Sub Window_OnLoad
<%
If Session("personalid") < Application("globalid") Then
%>
self.parent.display.document.write("<table width=100% border=0 cellPadding=0 cellSpacing=0><font color=#0000FF>"+"<%=Application("sender")%>"+"</font>: "+"<%=Application("message")%>"+"</table>")
self.parent.display.scroll 0, 20000000
self.parent.agent.Peedy.Speak "<%=Application("message")%>"
self.parent.agent.Peedy.Play "<%=Application("expression")%>"
<%
Session("personalid") = Application("globalid")
End If
%>
End Sub
</SCRIPT>
</BODY>
</HTML>
____________________________________________________________________
<%
Application.Lock
If Request.Form("txtMessage") <> "" Then
Application("message") = Server.HtmlEncode(Request.Form("txtMessage"))
Application("sender") = Session("username")
Application("expression") = Request.Form("rdoExpression")
Application("globalid") = Application("globalid") + 1
End If
Application.UnLock
%>
<HTML>
<HEAD>
<STYLE type=text/css>
.smalltext {font-size: 9pt}
</STYLE></HEAD>
<BODY BGCOLOR="#006699" TEXT="#FFFFFF" onload="document.frmMessage.txtMessage.focus();">
<FORM METHOD="POST" ACTION="message.asp" name=frmMessage>
<p class="smalltext">
You are welcome,<%=Session("username")%>
</p>
<p class="smalltext">
Choose an expression:<br/>
<input type="radio" value="Idle1_1" checked name="rdoExpression">Normal
<input type="radio" value="Explain" name="rdoExpression">Explain
<input type="radio" value="Greet" name="rdoExpression">Greet
<input type="radio" value="Congratulate" name="rdoExpression">Congratulate
<input type="radio" value="Decline" name="rdoExpression">Decline
<input type="radio" value="Pleased" name="rdoExpression">Pleased
<input type="radio" value="Think" name="rdoExpression">Think
<input type="radio" value="Announce" name="rdoExpression">Announce
<input type="radio" value="Uncertain" name="rdoExpression">Uncertain
<input type="radio" value="GestureRight" name="rdoExpression">Gesture Right
<input type="radio" value="DontRecognize" name="rdoExpression">Don't Recognize
<input type="radio" value="GetAttention" name="rdoExpression">Get Attention
<input type="radio" value="DoMagic2" name="rdoExpression">Do Magic
</p>
<p class="smalltext">
Message:<input name="txtMessage" type="TEXT" size=66>
<input type="submit" name="Submit" value="Submit">
</p>
</FORM>
</BODY>
</HTML>
Top
3 楼kinglh(用Delphi想BCB)回复于 2004-09-03 15:32:01 得分 10
强!! 我来加人气! 给点人气分!Top
4 楼lyzzbbgo(需要睡个好觉)回复于 2004-09-03 15:35:36 得分 2
markTop
5 楼kinglh(用Delphi想BCB)回复于 2004-09-03 15:38:34 得分 0
阿匡,记得给我分!
我是来帮你UP的.
Top
6 楼zltostem(五湖沸人)回复于 2004-09-03 15:39:08 得分 3
呵,有点意思哦
本段程序用5个checkbox模拟5个用户,选中之后无论怎样对其操作都无效,选中其他checkbox也对其无影响。每个checkbox从选中到取消选中历时3秒钟(即"当通话完毕电话B又恢复为允许接听状态")。可依次选中它们看看效果 ...
<input type=checkbox name=C1 onclick="if(this.checked == true){window.setTimeout('C1.checked = false','3000')} else {return false;}">
<input type=checkbox name=C2 onclick="if(this.checked == true){window.setTimeout('C2.checked = false','3000')} else {return false;}">
<input type=checkbox name=C3 onclick="if(this.checked == true){window.setTimeout('C3.checked = false','3000')} else {return false;}">
<input type=checkbox name=C4 onclick="if(this.checked == true){window.setTimeout('C4.checked = false','3000')} else {return false;}">
<input type=checkbox name=C5 onclick="if(this.checked == true){window.setTimeout('C5.checked = false','3000')} else {return false;}">
Top
7 楼net205(人不可以无耻到这种地步)回复于 2004-09-03 15:54:44 得分 0
zltostem(尘寞):
你这个是选取以后只有3000的时候间隔,3000后又取消选择了,我要的效果是选取后两个人一直可以说话,除非断开语聊。
先不管这个,现在的问题是1对1的语聊问题,大家帮我想想这事????急呀!!!!Top
8 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-03 16:00:03 得分 0
其实在网页上装个NETMEETING是最简单的了Top
9 楼net205(人不可以无耻到这种地步)回复于 2004-09-03 16:01:25 得分 0
但是客户要这效果,有这个要求呀Top
10 楼zhaoxiaoyang(梅雪香@深圳)回复于 2004-09-03 16:54:04 得分 2
都听客户的会死人的
能完全达到客户要求的不是程序员,是神Top
11 楼satans18((何畏)(只要你过得比我好))回复于 2004-09-03 17:29:12 得分 2
学习~~Top
12 楼gyj_china(透明)回复于 2004-09-03 17:36:06 得分 10
一群牛人。Top
13 楼ycted(长城万里今犹在,不见当年秦始皇!)回复于 2004-09-03 18:02:55 得分 2
呵呵,我用的就是netmeeting.实在是要抢工作进度.不然自己也来研究哈.Top
14 楼net205(人不可以无耻到这种地步)回复于 2004-09-03 18:35:49 得分 0
我自己顶Top
15 楼superdullwolf(超级大笨狼,每天要自强,MVP)回复于 2004-09-03 21:22:27 得分 2
标记Top
16 楼sugarshop(SugarXu)回复于 2004-09-04 15:51:41 得分 2
不懂.net 学习...Top
17 楼xzq686(★_瞬_★)回复于 2004-09-05 10:19:03 得分 2
markTop
18 楼SaySorry(天生本王)回复于 2004-09-05 18:31:30 得分 2
兔子 厉害呀!~Top
19 楼dayanmao(大眼猫)回复于 2004-09-06 11:54:47 得分 2
哗~~厉害啊~~我来学习的~~Top
20 楼mind_1220(大灰狼)回复于 2004-09-06 14:09:12 得分 2
MarkTop
21 楼shunzi110(顺子)回复于 2004-09-06 16:13:25 得分 2
這我也只能學習了~~~~~~~~~~~~~~~~Top
22 楼yixian2010(逸仙居士)回复于 2004-09-09 07:09:40 得分 2
......Top
23 楼101monster(毛毛虫)回复于 2004-09-09 08:11:35 得分 2
呵呵,UP!Top
24 楼darker(darker)回复于 2004-09-09 08:14:27 得分 2
在一对一的情况下,用netmeeting应该是可以的~Top
25 楼netdust(静时常思己过,闲谈勿论人非)回复于 2004-09-09 08:30:28 得分 2
不懂,也希望能够学习~~
各位阐述清楚些好么
netmeeting怎么做?Top
26 楼nighting1029(一个人的日子)回复于 2004-09-09 08:36:40 得分 2
先markTop
27 楼evilzydar(zydar)回复于 2004-09-09 13:45:34 得分 2
mark!
哪位大虾能讲一下这个组件的原理啊?偶非常想了解一下!看上面的代码只是能了解怎么用啊~Top
28 楼loveweb(洗洗睡了)回复于 2004-09-09 13:50:53 得分 2
没做过
学习Top
29 楼nan7757(骑着蚂蚁闯红灯)回复于 2004-09-09 15:01:15 得分 2
牛。。强人一大堆啊。。~~Top
30 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-12 00:20:21 得分 0
算了,我后天把你这个完成了吧,总在这里看着也不好,我写个完全版的,我后天写个完全版的Top
31 楼net205(人不可以无耻到这种地步)回复于 2004-09-13 13:57:06 得分 0
好,多谢了,兔子哥Top
32 楼ouyld(ゎたしすきぁぉた)回复于 2004-09-14 23:28:13 得分 3
function aa(){
if(document.checkbox1.checked==true)[
document.checkbox1.checked==flase
document.checkbox2.checked==flase
document.checkbox3.checked==flase
if (document.checkbox2.checked==true){
document.checkbox1.checked==true
document.checkbox2.checked==flase
document.checkbox3.checked==flase
if (document.checkbox2.checked==true){
document.checkbox2.checked==flase
document.checkbox3.checked==flase
if (document.checkbox3.checked==true){
document.checkbox1.checked==flase
document.checkbox2.checked==flase
document.checkbox3.checked==flase
}
}
}
}
}
<onclick=aa() //略
Top
33 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-14 23:57:16 得分 0
Dim objAG As New AgentObjects.Agent
Dim objAGChar As AgentObjects.IAgentCtlCharacterEx
Dim objAGCR As AgentObjects.IAgentCtlRequest
Private Sub Form_Load()
objAG.Connected = True
'objAG.ShowDefaultCharacterProperties 30, 30
objAG.Characters.Load "Genie"
Set objAGChar = objAG.Characters.Character("Genie")
objAGChar.Show True
'objAGChar.Hide
objAGChar.LanguageID = &H409
objAGChar.SoundEffectsOn = True
Set objAGCR = objAGChar.Speak("Hello! Your wish is my command.", "")
'Debug.Print objAGCR.Description
End Sub
Private Sub Form_Unload(Cancel As Integer)
objAGChar.Hide
Set objAGCR = Nothing
Set objAGChar = Nothing
Set objAG = Nothing
End Sub
可以用VB看一下是不是你想要的效果??
http://www.enet.com.cn/eschool/inforcenter/A20040306292052.html
如果是的话我在进行改进Top
34 楼net205(人不可以无耻到这种地步)回复于 2004-09-15 00:35:32 得分 0
兔子哥:
你错理解我的意思了,上面你说的“用Agent+ASP技术制作语音聊天室 ”,由于我不知道哪部分是哪个文件名,所以没试,楼上的VB代码我试过,它是用微软的Agent读出语音,不是我想要的结果呀
我的意思是说,比如我登陆到网站,则asp程序检测到我在线,生成一个按钮,别人点这个按钮后,经过我的同意,我跟他可以进行语音聊天,这语音聊天的效果跟那些语音聊天室的效果一样的(不过语音聊天室里是要抢到耳麦,通过管理员给麦后才能说话),也可以像QQ一语聊一样,一句一句话的对聊,用麦克风聊!!!Top
35 楼kenwoodking(爱的牧羊人)回复于 2004-09-15 14:04:00 得分 0
关注Top
36 楼BlueDestiny(Design Life - never-online.net)回复于 2004-09-15 14:26:08 得分 2
MS agent做这个不行的~。
关注。Top
37 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-15 14:58:15 得分 0
你要的我就用过netmeeting 做过,研究了一下AGENT,呵呵,我再看看再说了Top
38 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-15 15:05:11 得分 5
你用视频捕捉程序吧…………代码太长偶就不贴了…………Top
39 楼mikespook(CSDN == 吹死大牛)回复于 2004-09-15 15:16:51 得分 2
兔子的代码好~~呵呵~~收了~Top
40 楼jfliulang(jeck)回复于 2004-09-15 15:31:08 得分 2
顶一下,jfTop
41 楼nighting1029(一个人的日子)回复于 2004-09-15 15:48:23 得分 2
去下载netchat视频里聊天室就有了Top
42 楼net205(人不可以无耻到这种地步)回复于 2004-09-15 21:14:59 得分 0
用视频捕捉程序吧???
要编程写组件????????我现在还没那水平。。。
netchat??
那是一种局域网聊天的程序吧??跟我这有什么。。。???
楼主没看懂我的意思吧???Top
43 楼yyyjff(自己坚强的日子才精彩,坚强的心注定赢得幸福.)回复于 2004-09-16 17:37:07 得分 2
Dim objAG As New AgentObjects.Agent
Dim objAGChar As AgentObjects.IAgentCtlCharacterEx
Dim objAGCR As AgentObjects.IAgentCtlRequest
Private Sub Form_Load()
objAG.Connected = True
'objAG.ShowDefaultCharacterProperties 30, 30
objAG.Characters.Load "Genie"
Set objAGChar = objAG.Characters.Character("Genie")
objAGChar.Show True
'objAGChar.Hide
objAGChar.LanguageID = &H409
objAGChar.SoundEffectsOn = True
Set objAGCR = objAGChar.Speak("Hello! Your wish is my command.", "")
'Debug.Print objAGCR.Description
End Sub
Private Sub Form_Unload(Cancel As Integer)
objAGChar.Hide
Set objAGCR = Nothing
Set objAGChar = Nothing
Set objAG = Nothing
End Sub
可以用VB看一下是不是你想要的效果??
http://www.enet.com.cn/eschool/inforcenter/A20040306292052.html
如果是的话我在进行改进
Top
44 楼net205(人不可以无耻到这种地步)回复于 2004-09-16 22:43:30 得分 0
楼上的,你照抄上面的干吗???Top
45 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-16 23:01:52 得分 0
我是说我有视频捕捉程序,我不贴了,因为太长了,另外偶现在是服务社区里的意见和建议版版主,如果有问题可以直接找我Top
46 楼swhu()回复于 2004-10-13 10:11:31 得分 2
upTop
47 楼cn086(清凉小雅)回复于 2004-10-13 10:35:30 得分 2
HOHO!!!支持,我对语音视频聊天室的开发很感兴趣!Top
48 楼irq001()回复于 2004-10-13 10:41:29 得分 2
装个微软tts也行,可以不用agent,tts专门负责语音朗读,实际agent也是调用tts。Top




