Este exemplo mostra como usar os recursos do Skype em seu site ASP.NET 2.0. Com base no nome de usuário do Skype e no número de telefone padrão, você digita nos campos apropriados. Seis LinkButtons são preenchidos com as strings que o Skype precisa em um site para realizar as ações básicas, que são:
Fazer uma chamada do Skype via Skype.
Solicite informações de contato.
Inicie um bate-papo.
Envie um arquivo via Skype.
Adicione um contato.
Faça uma chamada pelo Skype.
Criando esta amostra
Comecei este exemplo criando um novo site vazio, selecionei a opção Adicionar novo item no site e selecionei um novo WebUserControl para adicionar ao meu aplicativo que chamei de SkypeSample (ele obtém a extensão .ascx após a criação). Neste WebsUserControl, criei os seguintes controles:
Um Label com a propriedade Text Nome Skype
Um rótulo com a propriedade Text Phone Nr
Uma TextBox com o ID txtSkypeName
Um TextBox com o ID txtPhoneNr
Um botão chamado Button1 por padrão, com a propriedade Text definida como Populate
Seis LinkButtons chamados, por padrão, Linkbutton1...
Seis imagens do tipo padrão chamadas, por padrão, Image1...
Além disso, adicionei uma pasta Imagens ao projeto e baixei um conjunto de imagens que os desenvolvedores podem usar no site do Skype (clique aqui para baixar as imagens), escolhi os botões necessários e os adicionei ao mapa de imagens criado. Defino o caminho dos meus controles Image1 a Image6 para a imagem apropriada em minha pasta Imagens.
Para Button1, criei um evento chamado Populate_Click, e o código a seguir que irá disparar o método SetSkypeStatus que criei posteriormente.
//Obter status do espião
tentar
{
this.SetSkype();
}
pegar
{
//
}
finalmente
{
//
}
Então cliquei no UserControl para ir para o code-behind e criei um método chamado SetSkype e as strings necessárias para a aplicação.
vazio protegido SetSkype()
{
//Define as imagens do site como invisíveis
Imagem1.Visível = verdadeiro;
Imagem2.Visível = verdadeiro;
Imagem3.Visível = verdadeiro;
Imagem4.Visível = verdadeiro;
Imagem5.Visível = verdadeiro;
Imagem6.Visível = verdadeiro;
//Cria as Strings que irão conter
//os valores e ações necessários
string SkypeName = txtSkypeName.Text;
string LandPhone = txtPhoneNr.Text;
string PathSkypeStatusString = "";
string SkypeAddContactString = "";
stringSkypeCallString = "";
string SkypeLandCall = "";
string SkypeChattString = "";
string SkypeProfileString = "";
string SkypeSendFileString = "";
Para preencher as strings com valores, criei blocos try. O primeiro bloco obtém o status do nome de usuário do Skype digitado após o método ser acionado. Como você pode ver no código abaixo, criei três strings (s1, s2, sT); o último dos três no primeiro bloco try representa a string total, já que tentei criar uma string que possa usar para obter o status do contato do Skype. Como você pode ver abaixo, a primeira parte da string é uma URL que diz onde procurar e qual ícone usar. Você pode alterar a palavra "mediumicon" para, por exemplo, "largeicon" e um ícone grande será mostrado. A string sT= parte neste bloco define o valor real da string sT para a string que desejo, o caminho a ser procurado mais o nome de usuário do Skype do qual desejo o status. O valor que sT contém é então passado para o PathSkypeStatusString criado acima; e atribuo PathSkypeStatusString como o valor da URL Image1, portanto, em tempo de execução, esta imagem deve mostrar um ícone médio com o status atual do usuário.
//Obter status do espião
tentar
{
string s1 = " http://mystatus.skype.com/mediumicon/ ";
string s2 = SkypeName;
string st = s1 + s2;
PathSkypeStatusString = sT;
Image1.ImageUrl = PathSkypeStatusString;
}
pegar
{
//
}
finalmente
{
//
}
Na próxima parte, preciso de mais strings porque o nome do usuário do Skype estará no meio da string, então criar a string completa é um pouco mais complicado. s4 é importante nesta parte porque essa é a ação que será executada em tempo de execução, e s6 no texto que ficará visível no LinkButton. Novamente, eu crio a string sT, passo o valor para SkypeCallString e defino o valor de LinkButton1 para o conteúdo de SkypeCallString, portanto, em tempo de execução, este Linkbutton iniciará a chamada quando clicado. No código, o valor HREF é visto sem tag de fechamento porque essa é adicionada posteriormente quando eu defino o valor da string s6.
//Definir CallString
tentar
{
//string s1 = "ver código";
string s2 = "skype:";
string s3 = SkypeName;
string s4 = "?chamar";
string s5 = '"'.ToString();
string s6 = ">Skype Me";
string sT = s1 + s2 + s3 + s4 + s5 + s6;
SkypeCallString = st;
LinkButton1.Text=SkypeCallString;
}
pegar
{
//Pendência
}
finalmente
{
//Pendência
}
Repito isso para todas as ações que podem ser realizadas pelo usuário, definindo os valores dos LinkButtons para as ações que desejo que eles executem. Está claro por que as diferentes ações sempre se parecem com ?call, ?chat etc.
Executando o código de exemplo
Para executar o código de exemplo, basta abrir a pasta SkypeSample com o Visual Studio, na opção de menu Arquivo, Abrir e selecionar o site. O código deve ser carregado e, quando você pressionar F5, o aplicativo de exemplo deverá ser executado.
Uso adicional
Este exemplo é fácil de usar dinamicamente quando você armazena o nome de usuário e o número de telefone do Skype em um banco de dados e apresenta esses valores em seu site, com, por exemplo, um DetailControl que você carrega com uma fonte de dados. Ao definir o nome de usuário e o número de telefone do Skype como DataKeys para o DetailControl, você pode usar os valores que eles mantêm no tempo de execução para preencher as strings (nome de usuário e número de telefone do Skype). Abaixo está um exemplo que mostra como você pode definir as propriedades do Skype.
//Definir valores de string SkypeName e SkypeLandCall dinamicamente
tentar
{
//Definir string NomeSkype
string SkypeName = DetailsView1.DataKey["Skype"].ToString();
//Definir string SkypeLandCall
string SkypeLandCall = DetailsView1.DataKey["CompanyPhone"].ToString();
}
pegar
{
//Pendência
}
finalmente
{
//Pendência
}
Pontos de Interesse
Não estou dizendo que o código seja perfeito, mas funciona bem no meu laptop. Quando solicito o site do meu servidor local, todas as opções do Skype funcionam. O nome Skype é propriedade da Skype Limited.