Microsoft Bot Framework不会发送多行消息

时间:2017-05-17 19:50:41

标签: string botframework line-breaks

所以我已经构建了这个机器人,它应该响应具有状态消息的用户。我想让这些消息相当干净,因此想要用新行开始每个新属性。唯一的问题是,当我这样做时,机器人只打印前几行。

所以这是我已经获得的代码,我确保数据确实在那里。

 internal static string DeviceInformation(Device device)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append($"[Name]: {device.Name}\n\n");
            sb.Append($"[Location]: {device.LocationName} \n\n");
            if (device.ContactLost)
            {
                sb.Append("[Status]:Offline!\n\n");
                sb.Append($"[Time Offline]: {device.ContactLostTime} \n\n");
                sb.Append($"[Time Offline]: {device.ContactLostTime} \n\n");
            }
            else
            {
                sb.Append("[Status]:online! \n\n");
            }


            return sb.ToString();
        }

        internal static string DeviceInformation(Device device, DeviceHistory statistic)
        {
            StringBuilder sb = new StringBuilder(DeviceInformation(device));
            sb.Append($"[Time]: {statistic.CreatedTimeStamp} \n\n");
            sb.Append($"[Signal]: {statistic.SignalStrength} \n\n");
            sb.Append($"[Battery]: {statistic.BatteryLevel} \n\n");
            Debug.WriteLine("TOSTRING " + sb.ToString());
            return sb.ToString();
        }

下一行打印出来:

TOSTRING [Name]: Restroom 1

[Location]: Floor 2 

[Status]:online! 

[Time]: 16/05/2017 22:23:45 

[Signal]: -88 

[Battery]: 60 

现在机器人打印出来了:

[Name]: Restroom 1
[Location]: Floor 2
[Time]: 16/05/2017 22:23:45

如果我删除所有换行符\n并将所有内容放在同一行,则机器人会打印整条消息。

任何人都知道我能做些什么呢?

1 个答案:

答案 0 :(得分:2)

有趣的行为。我能够重现它...我仍在寻找问题的根本原因,但是,我找到了一个解决方法,就是使用子弹。

我通过以下方式更新了您的代码:

internal static string DeviceInformation(Device device)
{
    StringBuilder sb = new StringBuilder();

    sb.Append($"• [Name]: {device.Name}\n\n");
    sb.Append($"• [Location]: {device.LocationName}\n\n");
    if (device.ContactLost)
    {
        sb.Append("[Status]:Offline!\n\n");
        sb.Append($"[Time Offline]: {device.ContactLostTime}\n\n");
        sb.Append($"[Time Offline]: {device.ContactLostTime}\n\n");
    }
    else
    {
        sb.Append("• [Status]:online!\n\n");
    }

    return sb.ToString();
}

internal static string DeviceInformation(Device device, DeviceHistory statistic)
{
    StringBuilder sb = new StringBuilder(DeviceInformation(device));
    sb.Append($"• [Time]: {statistic.CreatedTimeStamp}\n\n");
    sb.Append($"• [Signal]: {statistic.SignalStrength}\n\n");
    sb.Append($"• [Battery]: {statistic.BatteryLevel}\n\n");
    Debug.WriteLine("TOSTRING " + sb.ToString());
    return sb.ToString();
}

有了它,它在模拟器中按预期工作:

enter image description here