public void NewMessage(TextMessage msg) { User user = new User(); if (!ttclient.GetUser(msg.nFromUserID, ref user)) return; this.Text = "Message - " + user.szNickname; historyTextBox.AppendText("<" + user.szNickname + "> " + msg.szMessage + Environment.NewLine); }
public static extern BearWare.ClientError TTS_SendTextMessage(IntPtr lpTTSInstance, [In] ref BearWare.TextMessage lpTextMessage);
void ttclient_OnCmdUserTextMessage(TextMessage textmessage) { switch (textmessage.nMsgType) { case TextMsgType.MSGTYPE_USER : MessageDlg dlg; if (msgdialogs.TryGetValue(textmessage.nFromUserID, out dlg)) { dlg.NewMessage(textmessage); if (!dlg.Visible) dlg.Show(); } else { dlg = new MessageDlg(ttclient, textmessage.nFromUserID); dlg.FormClosed += new FormClosedEventHandler(dlg_MessageDlgClosed); dlg.NewMessage(textmessage); dlg.Show(); msgdialogs.Add(textmessage.nFromUserID, dlg); } break; case TextMsgType.MSGTYPE_CHANNEL: { User user = new User(); if (ttclient.GetUser(textmessage.nFromUserID, ref user)) chatTextBox.AppendText("<" + user.szNickname + "> " + textmessage.szMessage + Environment.NewLine); break; } case TextMsgType.MSGTYPE_BROADCAST: { User user = new User(); if (ttclient.GetUser(textmessage.nFromUserID, ref user)) { MessageBox.Show("Broadcast message from " + user.szNickname + Environment.NewLine + textmessage.szMessage); } } break; case TextMsgType.MSGTYPE_CUSTOM: { } break; } }
/** * @brief Send a text message to either a user or a channel. * * Can also be a broadcast message which is received by all users * on the server. This, however, requires * ::USERRIGHT_TEXTMESSAGE_BROADCAST. * * Possible errors: * - #ClientError ::CMDERR_NOT_LOGGEDIN * - #ClientError ::CMDERR_NOT_AUTHORIZED * - #ClientError ::CMDERR_CHANNEL_NOT_FOUND * - #ClientError ::CMDERR_USER_NOT_FOUND * * @param lpTextMessage A preallocated text-message struct. * @return Returns command ID which will be passed in * #OnCmdProcessing event when the server is processing the * command. -1 is returned in case of error. * @see UserRight ::USERRIGHT_TEXTMESSAGE_BROADCAST */ public int DoTextMessage(TextMessage lpTextMessage) { return TTDLL.TT_DoTextMessage(m_ttInst, ref lpTextMessage); }
void ttserver_OnUserTextMessage(ref User lpUser, ref TextMessage lpTextMessage) { String str = String.Format("User {0} sent text message", lpUser.szUsername); Console.WriteLine(str); }
public void TestTextMessage() { const string USERNAME = "******", PASSWORD = "******"; string NICKNAME = "TeamTalk.NET - " + GetCurrentMethod(); const UserRight USERRIGHTS = UserRight.USERRIGHT_CREATE_TEMPORARY_CHANNEL | UserRight.USERRIGHT_VIEW_ALL_USERS; MakeUserAccount(GetCurrentMethod(), USERNAME, PASSWORD, USERRIGHTS); TeamTalk ttclient = NewClientInstance(); Connect(ttclient); Login(ttclient, NICKNAME, USERNAME, PASSWORD); int cmdid; TTMessage msg = new TTMessage(); Channel chan = new Channel(); chan.nParentID = ttclient.GetRootChannelID(); chan.szName = "my channel"; chan.szTopic = "a topic"; chan.nMaxUsers = 128; chan.audiocodec.nCodec = Codec.OPUS_CODEC; chan.audiocodec.opus.nApplication = OpusConstants.OPUS_APPLICATION_AUDIO; chan.audiocodec.opus.nChannels = 1; chan.audiocodec.opus.nBitRate = 64000; chan.audiocodec.opus.nComplexity = 5; chan.audiocodec.opus.nTxIntervalMSec = 20; chan.audiocodec.opus.nSampleRate = 48000; chan.audiocodec.opus.bDTX = true; chan.audiocodec.opus.bFEC = true; chan.audiocodec.opus.bVBR = true; chan.audiocodec.opus.bVBRConstraint = false; TeamTalk ttclient2 = NewClientInstance(); Connect(ttclient2); Login(ttclient2, ADMIN_NICKNAME, ADMIN_USERNAME, ADMIN_PASSWORD); //text message string newmessage = "this is a new message"; TextMessage txtmsg = new TextMessage(); txtmsg.nMsgType = TextMsgType.MSGTYPE_USER; txtmsg.szMessage = newmessage; txtmsg.nToUserID = 55555; cmdid = ttclient.DoTextMessage(txtmsg); Assert.IsTrue(cmdid > 0, "text msg err issued"); Assert.IsTrue(WaitForEvent(ttclient, ClientEvent.CLIENTEVENT_CMD_ERROR, DEF_WAIT), "invalid userid"); txtmsg.nToUserID = ttclient2.GetMyUserID(); cmdid = ttclient.DoTextMessage(txtmsg); Assert.IsTrue(cmdid > 0, "text msg issued"); Assert.IsTrue(WaitForEvent(ttclient, ClientEvent.CLIENTEVENT_CMD_SUCCESS, DEF_WAIT), "send tx msg to userid"); Assert.IsTrue(WaitForEvent(ttclient2, ClientEvent.CLIENTEVENT_CMD_USER_TEXTMSG, DEF_WAIT, ref msg), "recv text msg"); TextMessage recv_txtmsg = (TextMessage)msg.DataToObject(); Assert.AreEqual(txtmsg.nMsgType, recv_txtmsg.nMsgType); Assert.AreEqual(txtmsg.nChannelID, recv_txtmsg.nChannelID); Assert.AreEqual(txtmsg.szMessage, recv_txtmsg.szMessage); //custom message txtmsg.nMsgType = TextMsgType.MSGTYPE_CUSTOM; cmdid = ttclient.DoTextMessage(txtmsg); Assert.IsTrue(cmdid > 0, "custom text msg issued"); Assert.IsTrue(WaitForEvent(ttclient, ClientEvent.CLIENTEVENT_CMD_SUCCESS, DEF_WAIT), "send custom tx msg to userid"); Assert.IsTrue(WaitForEvent(ttclient2, ClientEvent.CLIENTEVENT_CMD_USER_TEXTMSG, DEF_WAIT, ref msg), "recv custom text msg"); recv_txtmsg = (TextMessage)msg.DataToObject(); Assert.AreEqual(txtmsg.nMsgType, recv_txtmsg.nMsgType); Assert.AreEqual(txtmsg.nChannelID, recv_txtmsg.nChannelID); Assert.AreEqual(txtmsg.szMessage, recv_txtmsg.szMessage); //broadcast txtmsg.nMsgType = TextMsgType.MSGTYPE_BROADCAST; cmdid = ttclient.DoTextMessage(txtmsg); Assert.IsTrue(WaitForEvent(ttclient, ClientEvent.CLIENTEVENT_CMD_ERROR, DEF_WAIT), "no bcast rights"); cmdid = ttclient2.DoTextMessage(txtmsg); Assert.IsTrue(WaitForEvent(ttclient2, ClientEvent.CLIENTEVENT_CMD_SUCCESS, DEF_WAIT), "has bcast rights"); cmdid = ttclient.DoJoinChannel(chan); Assert.IsTrue(WaitForEvent(ttclient, ClientEvent.CLIENTEVENT_CMD_SUCCESS, DEF_WAIT, ref msg), "has rights"); Assert.AreEqual(cmdid, msg.nSource); //channel msg txtmsg.nMsgType = TextMsgType.MSGTYPE_CHANNEL; txtmsg.nChannelID = ttclient.GetRootChannelID(); cmdid = ttclient.DoTextMessage(txtmsg); Assert.IsTrue(WaitForEvent(ttclient, ClientEvent.CLIENTEVENT_CMD_ERROR, DEF_WAIT), "no chan msg rights"); txtmsg.nChannelID = ttclient.GetMyChannelID(); cmdid = ttclient2.DoTextMessage(txtmsg); Assert.IsTrue(WaitForEvent(ttclient2, ClientEvent.CLIENTEVENT_CMD_SUCCESS, DEF_WAIT), "has chan msg rights"); cmdid = ttclient.DoTextMessage(txtmsg); Assert.IsTrue(WaitForEvent(ttclient, ClientEvent.CLIENTEVENT_CMD_SUCCESS, DEF_WAIT), "own chan msg rights"); cmdid = ttclient.DoLeaveChannel(); Assert.IsTrue(WaitForEvent(ttclient, ClientEvent.CLIENTEVENT_CMD_SUCCESS, DEF_WAIT), "leave chan"); //invalid text message txtmsg = new TextMessage(); txtmsg.nMsgType = (TextMsgType)55; txtmsg.szMessage = "blahhhhhh"; txtmsg.nToUserID = 55555; cmdid = ttclient.DoTextMessage(txtmsg); Assert.IsTrue(cmdid > 0, "text msg issued"); Assert.IsTrue(WaitForEvent(ttclient, ClientEvent.CLIENTEVENT_CMD_ERROR, DEF_WAIT, ref msg), "protocol error"); ClientErrorMsg errmsg = (ClientErrorMsg)msg.DataToObject(); Assert.AreEqual((int)ClientError.CMDERR_INCOMPATIBLE_PROTOCOLS, errmsg.nErrorNo); }
static void ttclient_OnCmdUserTextMessage(TextMessage textmessage) { User user = new User(), touser = new User(); if (!ttclient.GetUser(textmessage.nFromUserID, ref user)) return; ttclient.GetUser(textmessage.nToUserID, ref touser); string chanpath = ""; ttclient.GetChannelPath(textmessage.nChannelID, ref chanpath); switch (textmessage.nMsgType) { case TextMsgType.MSGTYPE_USER : Console.WriteLine("Text message from user #{0} {1} to user #{2} {3} content: {4}", user.nUserID, user.szNickname, touser.nUserID, touser.szNickname, textmessage.szMessage); break; case TextMsgType.MSGTYPE_CHANNEL : Console.WriteLine("Text message from user #{0} {1} to channel {2} context: {3}", user.nUserID, user.szNickname, chanpath, textmessage.szMessage); break; case TextMsgType.MSGTYPE_BROADCAST : Console.WriteLine("Text messagr from user #{0} {1} to entire server content: {2}", user.nUserID, user.szNickname, textmessage.szMessage); break; } }