2016-11-08 19:27:44 +01:00

68 lines
2.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
/*
ChatterBotAPI
Copyright (C) 2011 pierredavidbelanger@gmail.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
namespace Services.CleverBotApi
{
internal class Pandorabots : ChatterBot
{
private readonly string botid;
public Pandorabots(string botid)
{
this.botid = botid;
}
public ChatterBotSession CreateSession()
{
return new PandorabotsSession(botid);
}
}
internal class PandorabotsSession : ChatterBotSession
{
private readonly IDictionary<string, string> vars;
public PandorabotsSession(string botid)
{
vars = new Dictionary<string, string>();
vars["botid"] = botid;
vars["custid"] = Guid.NewGuid().ToString();
}
public async Task<ChatterBotThought> Think(ChatterBotThought thought)
{
vars["input"] = thought.Text;
var response = await Utils.Post("http://www.pandorabots.com/pandora/talk-xml", vars, null).ConfigureAwait(false);
var responseThought = new ChatterBotThought();
responseThought.Text = Utils.XPathSearch(response, "//result/that/text()");
return responseThought;
}
public async Task<string> Think(string text)
{
return (await Think(new ChatterBotThought {Text = text}).ConfigureAwait(false)).Text;
}
}
}