如何在Botframework V4中触发对话结束?

时间:2019-04-15 09:31:27

标签: c# botframework

我正在尝试通过public void Download(string localDirectory,string localFilename,string remoteDirectory,string remoteFileName) { string client_path=Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(localDirectory))); string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); string configFile = System.IO.Path.Combine(appPath, "PACS.exe.config"); ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap(); configFileMap.ExeConfigFilename = configFile; System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None); config.AppSettings.Settings["client_path"].Value = client_path; config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); string str = Path.Combine(localDirectory, localFilename); FileInfo fileInfo = new FileInfo(str); FileStream fileStream = (FileStream)null; WebException webException; try { string path = Path.GetDirectoryName(Path.GetDirectoryName(remoteDirectory)); string path1 = Path.GetDirectoryName(Path.GetDirectoryName(localDirectory)); WebRequest sizeRequest = WebRequest.Create("ftp://" + "IP" + ":" + "port" + "/" + "C:\\KINSOLUTIONS\\Team\\Images\\1" + ".zip"); sizeRequest.Credentials = (ICredentials)new NetworkCredential("UserName", "Password"); sizeRequest.Method = WebRequestMethods.Ftp.GetFileSize; int size = (int)sizeRequest.GetResponse().ContentLength; FtpWebRequest ftpWebRequest = WebRequest.Create(new Uri("ftp://" + "IP" + ":" + "port" + "/" + "C:\\KINSOLUTIONS\\Team\\Images\\1" + ".zip")) as FtpWebRequest; ftpWebRequest.Credentials = (ICredentials)new NetworkCredential("UserName", "Password"); ftpWebRequest.UsePassive = true; ftpWebRequest.Timeout = 6000; ftpWebRequest.KeepAlive = false; ftpWebRequest.Method = "RETR"; ftpWebRequest.UseBinary = true; fileStream = new FileStream(path1 + ".zip", FileMode.Create, FileAccess.Write, FileShare.ReadWrite); using(Stream responseStream = (ftpWebRequest.GetResponse() as FtpWebResponse).GetResponseStream()) { byte[] buffer = new byte[32768]; int count = responseStream.Read(buffer, 0, 32768); long num = (long)count; int post = 0; while (size != post || count != 0 ) { bool result = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable(); while (!result) { result = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable(); if (result) { fileStream.Close(); Download(localDirectory, localFilename, remoteDirectory, remoteFileName); } } fileStream.Write(buffer, 0, count); count = responseStream.Read(buffer, 0, 32768); int position = (int)fileStream.Position; num += (long)count; post = position; } fileStream.Close(); } } catch (WebException ex) { if (fileStream != null) fileStream.Close(); this.Download(localDirectory, localFilename, remoteDirectory, remoteFileName); } finally { if (fileStream != null) fileStream.Close(); } } 方法触发条件(turnContext.Activity.Type == ActivityTypes.EndOfConversation),以便我可以进行聊天的一些清理/摘要。如何实现?

我已经尝试过OnTurnAsyncCancelAllDialogsAsync(),但都不会结束聊天。仅供参考,我使用的是Bot仿真器4.2.1,没有其他测试渠道。

调用EndDialogsAsync()时,我的对话将回到第一个对话框(这是建议列表)。 CancelAllDialogsAsync()只是停止对话,但没有触发EndOfConversation Activity类型。

0 个答案:

没有答案