Exemplo n.º 1
0
        /// <summary>
        /// build a image chat message
        /// </summary>
        /// <param name="imageName">image file name</param>
        /// <param name="mime">mime type.such as image/png</param>
        /// <param name="width">image display width</param>
        /// <param name="height">image display height</param>
        /// <param name="imageBase64">iamge with base64 encode</param>
        /// <param name="text">text message with the image</param>
        /// <returns>image chat message</returns>
        public static ChatMessage BuildImageMessage(string imageName, string mime, int width, int height, string imageBase64, string text = " ")
        {
            var msg = new ChatMessage();

            msg.Text = text;
            msg.Ent  = new List <EntMessage>();
            msg.Fmt  = new List <FmtMessage>();
            msg.Ent.Add(new EntMessage()
            {
                Tp   = "IM",
                Data = new EntData()
                {
                    Mime   = mime,
                    Width  = width,
                    Height = height,
                    Name   = imageName,
                    Val    = imageBase64,
                }
            });
            msg.Fmt.Add(new FmtMessage()
            {
                At  = text.Length,
                Len = 1,
                Key = 0,
            });

            if (text.Contains("\n"))
            {
                for (int i = 0; i < text.Length; i++)
                {
                    if (text[i] == '\n')
                    {
                        FmtMessage fmt = new FmtMessage()
                        {
                            At = i, Tp = "BR", Len = 1
                        };
                        msg.Fmt.Add(fmt);
                    }
                }
            }
            return(msg);
        }
Exemplo n.º 2
0
        /// <summary>
        /// build a attachment message
        /// </summary>
        /// <param name="attachmentInfo">attachment file information, you can get it with ChatBot.Upload(...)</param>
        /// <param name="text">text message with the attachment</param>
        /// <returns>attachment chat message</returns>
        public static ChatMessage BuildAttachmentMessage(UploadedAttachmentInfo attachmentInfo, string text = " ")
        {
            var msg = new ChatMessage();

            msg.Text = text;
            msg.Ent  = new List <EntMessage>();
            msg.Fmt  = new List <FmtMessage>();
            msg.Ent.Add(new EntMessage()
            {
                Tp   = "EX",
                Data = new EntData()
                {
                    Mime = attachmentInfo.Mime,
                    Name = attachmentInfo.FileName,
                    Ref  = attachmentInfo.RelativeUrl,
                    Size = int.Parse(attachmentInfo.Size.ToString()),
                }
            });
            msg.Fmt.Add(new FmtMessage()
            {
                At  = text.Length,
                Len = 1,
                Key = 0,
            });

            if (text.Contains("\n"))
            {
                for (int i = 0; i < text.Length; i++)
                {
                    if (text[i] == '\n')
                    {
                        FmtMessage fmt = new FmtMessage()
                        {
                            At = i, Tp = "BR", Len = 1
                        };
                        msg.Fmt.Add(fmt);
                    }
                }
            }
            return(msg);
        }
Exemplo n.º 3
0
        /// <summary>
        /// build a file chat message
        /// </summary>
        /// <param name="fileName">file name</param>
        /// <param name="mime">mime type, such as text/plain</param>
        /// <param name="contentBase64">file with base64 encode</param>
        /// <param name="text">text messaage with the file</param>
        /// <returns>file chat message</returns>
        public static ChatMessage BuildFileMessage(string fileName, string mime, string contentBase64, string text = " ")
        {
            var msg = new ChatMessage();

            msg.Text = text;
            msg.Ent  = new List <EntMessage>();
            msg.Fmt  = new List <FmtMessage>();
            msg.Ent.Add(new EntMessage()
            {
                Tp   = "EX",
                Data = new EntData()
                {
                    Mime = mime,
                    Name = fileName,
                    Val  = contentBase64,
                }
            });
            msg.Fmt.Add(new FmtMessage()
            {
                At  = text.Length,
                Len = 0,
                Key = 0,
            });

            if (text.Contains("\n"))
            {
                for (int i = 0; i < text.Length; i++)
                {
                    if (text[i] == '\n')
                    {
                        FmtMessage fmt = new FmtMessage()
                        {
                            At = i, Tp = "BR", Len = 1
                        };
                        msg.Fmt.Add(fmt);
                    }
                }
            }
            return(msg);
        }
Exemplo n.º 4
0
        /// <summary>
        /// build text chat message with formatted
        /// </summary>
        /// <param name="text">text message</param>
        /// <returns>text chat message</returns>
        public static ChatMessage BuildTextMessage(string text = " ")
        {
            var msg = new ChatMessage();

            msg.Text = text;
            msg.Ent  = new List <EntMessage>();
            msg.Fmt  = new List <FmtMessage>();
            if (text.Contains("\n"))
            {
                for (int i = 0; i < text.Length; i++)
                {
                    if (text[i] == '\n')
                    {
                        FmtMessage fmt = new FmtMessage()
                        {
                            At = i, Tp = "BR", Len = 1
                        };
                        msg.Fmt.Add(fmt);
                    }
                }
            }
            return(msg);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Append text message to build message
        /// </summary>
        /// <param name="text">text message</param>
        /// <param name="isBold">if text should bold style</param>
        /// <param name="isItalic">if text should italic style</param>
        /// <param name="isDeleted">if text should deleted style</param>
        /// <param name="isCode">if text is code like data</param>
        /// <param name="isLink">if text is link</param>
        /// <param name="isMention">if text is mention user, should contains '@', for example: @tinode</param>
        /// <param name="isHashTag">if text is hashtags, should contains '#',for example: #tinode</param>
        /// <param name="isForm">if text is form</param>
        /// <param name="isButton">if text is button</param>
        /// <param name="buttonDataName">button name</param>
        /// <param name="buttonDataAct">button act</param>
        /// <param name="buttonDataVal">button val</param>
        public void AppendText(string text, bool isBold = false, bool isItalic = false, bool isDeleted = false
                               , bool isCode            = false, bool isLink = false, bool isMention = false, bool isHashTag = false, bool isForm = false, bool isButton = false, string buttonDataName = null, string buttonDataAct = "pub", string buttonDataVal = null)
        {
            int baseLen = Message.Text.Length;

            Message.Text += text;
            if (text.Contains("\n"))
            {
                for (int i = 0; i < text.Length; i++)
                {
                    if (text[i] == '\n')
                    {
                        FmtMessage fmt = new FmtMessage()
                        {
                            At = baseLen + i, Tp = "BR", Len = 1
                        };
                        Message.Fmt.Add(fmt);
                    }
                }
            }

            var leftLen  = baseLen + (text.Length - text.TrimStart().Length);
            var subLen   = text.Length - text.TrimEnd().Length;
            var validLen = Message.Text.Length - leftLen - subLen;

            if (isBold)
            {
                FmtMessage fmt = new FmtMessage()
                {
                    Tp = "ST", At = leftLen, Len = validLen
                };
                Message.Fmt.Add(fmt);
            }

            if (isItalic)
            {
                FmtMessage fmt = new FmtMessage()
                {
                    Tp = "EM", At = leftLen, Len = validLen
                };
                Message.Fmt.Add(fmt);
            }

            if (isDeleted)
            {
                FmtMessage fmt = new FmtMessage()
                {
                    Tp = "DL", At = leftLen, Len = validLen
                };
                Message.Fmt.Add(fmt);
            }

            if (isCode)
            {
                FmtMessage fmt = new FmtMessage()
                {
                    Tp = "CO", At = leftLen, Len = validLen
                };
                Message.Fmt.Add(fmt);
            }

            if (isLink)
            {
                FmtMessage fmt = new FmtMessage()
                {
                    At = leftLen, Len = validLen, Key = Message.Ent.Count
                };
                Message.Fmt.Add(fmt);
                var url = text.Trim().ToLower();
                if (!url.StartsWith("http://") && !url.StartsWith("https://"))
                {
                    url = $"http://{text.Trim()}";
                }
                EntMessage ent = new EntMessage()
                {
                    Tp = "LN", Data = new EntData()
                    {
                        Url = url
                    }
                };
                Message.Ent.Add(ent);
            }

            if (isMention)
            {
                FmtMessage fmt = new FmtMessage()
                {
                    At = leftLen, Len = validLen, Key = Message.Ent.Count
                };
                Message.Fmt.Add(fmt);
                var        mentionName = text.Trim().Substring(1);
                EntMessage ent         = new EntMessage()
                {
                    Tp = "MN", Data = new EntData()
                    {
                        Val = mentionName
                    }
                };
                Message.Ent.Add(ent);
            }

            if (isHashTag)
            {
                FmtMessage fmt = new FmtMessage()
                {
                    At = leftLen, Len = validLen, Key = Message.Ent.Count
                };
                Message.Fmt.Add(fmt);
                var        hashTag = text.Trim();
                EntMessage ent     = new EntMessage()
                {
                    Tp = "HT", Data = new EntData()
                    {
                        Val = hashTag
                    }
                };
                Message.Ent.Add(ent);
            }

            if (isForm)
            {
                FmtMessage fmt = new FmtMessage()
                {
                    At = leftLen, Len = validLen, Tp = "FM"
                };
                Message.Fmt.Add(fmt);
            }

            if (isButton)
            {
                var btnName = buttonDataName;
                if (btnName == null)
                {
                    buttonDataName = text.Trim().ToLower();
                }
                FmtMessage fmt = new FmtMessage()
                {
                    At = leftLen, Len = validLen, Key = Message.Ent.Count
                };
                Message.Fmt.Add(fmt);
                var        btnText = text.Trim();
                EntMessage ent     = new EntMessage()
                {
                    Tp = "BN", Data = new EntData()
                    {
                        Name = buttonDataName, Act = buttonDataAct, Val = buttonDataVal
                    }
                };
                Message.Ent.Add(ent);
            }
        }