SlideShare a Scribd company logo
1 of 21
Integrando Skype em aplicações Delphi Andreano Lanusse Technical Lead Evangelist, Developer Relations
O que é Skype? P2P Internet Telephone – VOIP Computador para Computador Computador para Telefone (SkypeOut) Telefone para  Computador (Skypein) P2P Instant Messenger Tópics Históricos P2P Application Framework
O que é Skype? Mais de 500 milhões de downloads Mais de 130 milhões de usuários ativos 4 a 8 milhões de usuários simultâneos 250000 novos usuários por dia
O quão amigável é o Skype Delphi amigável Windows Client escrito em Delphi Usa Indy para as comunicações que não são P2P SDK Tools escrito em Delphi Algumas documentação e interfaces escritas em pascal Exemplos Delphi C++ C# VB Phyton
Desenvolvendo para Skype Skype API Método original de integração Usa Windows Message Muito flexível Skype4COM / Skype4Java EasyObjectWrappers Menos flexível Skype Extras Plug-in Framework
O que você precisa para usar Skype API Instalação Skype: http://www.skype.com Nenhum outro arquivo necessário Documentação API – https://developer.skype.com/Docs/ApiDoc Dev Notes - https://developer.skype.com/Docs/DevNotes Este apresentação Vamos focar no Skype API e Skype4COM
Usando Skype API Conectando ao Skype Registrar ‘SkypeControlAPIDiscover’ windows message Registrar ‘SkypeControlAPIAttach’ windows message Broadcast ‘SkypeControlAPIDiscover’ windows message Skype responde com um  ‘SkypeControlAPIAttach’ message Identificao o Protocolo  de referência procedure TSkypeAPI.Connect; begin if IsSkypeInstalled then begin     FSkypeAPIDiscover := RegisterWindowMessage('SkypeControlAPIDiscover');     FSkypeAPIAttach := RegisterWindowMessage('SkypeControlAPIAttach');     SendMessage(HWND_BROADCAST, FSkypeAPIDiscover, Handle, 0) end; end;
Definindo Protocolo - Skype API Define qual protocolo usar Override WndProc procedure TSkypeAPI.WndProc(var Message: TMessage); begin if Message.Msg = FSkypeAPIAttach then begin if Message.LParam = 0 then begin       FSkypeAPIWindow := Message.WParam;       SendCommand('PROTOCOL '+IntTostr(FProtocol)); end else if Assigned(FOnConnectStatus) then caseMessage.LParam of           1: FOnConnectStatus(Self,csWaitingForConfirmation);           2: FOnConnectStatus(Self,csDenied);           3: FOnConnectStatus(Self,csNotAvailable); else           FOnConnectStatus(Self,csNotAttached); end; Message.Result := 1 end else inherited; end;
Send Command - Skype API Definir parâmetros através da estrutura CopyDataStruct procedure TSkypeAPI.SendCommand(Str: String); var   CopyData: CopyDataStruct; begin if Str <> '' then begin     CopyData.dwData := 0;     CopyData.lpData := PChar(Str);     CopyData.cbData := Length(Str)+1;     SendMessage(FSkypeAPIWindow, WM_COPYDATA, Self.Handle,LPARAM(@CopyData)); end; end;
Receive Command - Skype API Espere pelo WM_COPYDATA message lpData recebe o comando como PAnsiChar procedure TSkypeAPI.WMCopyData(var Message: TWMCopyData); var   msg : String; begin if (Message.From = FSkypeAPIWindow) and      (FSkypeAPIWindow > 0) then begin     msg := PAnsiChar(Message.CopyDataStruct.lpData)     Message.Result := 1 end; end;
Skype API Wrapper Jason Southwell e Dr. Bob criaram o componente TSkypeAPI Skype API wrapper Código disponível no CodeCentral, facilita o uso do Skype API
Comandos - Skype API Phone Control AUDIO IN | OUT, HOOK ON | OFF, MUTE ON | OFF, BTN_PRESSED, BTN_RELEASED Voice Calls CALL | GET CALL | SET CALL INPROGRESS | SET CALL FINISHED | SET CALL ONHOLD | SET CALL JOIN CONFERENCE | SET CALL DTMF | SET CALL SEEN | ALTER CALL | GET CALL CAN TRANSFER | ALTER CALL TRANSFER Managing call forwarding GET PROFILE CALL APPLY CF | SET PROFILE CALL APPLY CF | GET PROFILE CALL FORWARD RULES | SET PROFILE CALL FORWARD RULES | GET PROFILE CALL NOANSWER TIMEOUT | SET PROFILE CALL NOANSWER TIMEOUT | GET PROFILE CALL SEND TO VM | SET PROFILE CALL SEND TO VM |
Comandos - Skype API Sending and managing SMS messages CREATE SMS | SET SMS BODY | ALTER SMS SEND | SET SMS SEEN | SET SMS REPLY TO NUMBER | SET SMS TARGET NUMBERS Custom Application Communication AP2AP CREATE | AP2AP CONNECT | AP2AP WRITE | AP2AP DATAGRAM | AP2AP READ | AP2AP DISCONNECT | AP2AP DELETE  Making and managing video calls GET VIDEO IN | SET VIDEO IN | GET CALL VIDEO STATUS | ALTER CALL VIDEO SEND | ALTER CALL VIDEO RECEIVE | GET CALL VIDEO SEND STATUS | GET CALL VIDEO RECEIVE STATUS | IS VIDEO CAPABLE | OPEN VIDEOTEST | OPEN OPTIONS VIDEO
Comandos - Skype API Managing contacts and groups GET GROUP USERS | GET GROUP VISIBLE | GET GROUP EXPANDED | GET GROUP DISPLAYNAME | SET GROUP DISPLAYNAME | GET GROUP TYPE | CREATE GROUP | DELETE GROUP | ALTER GROUP ADDUSER | ALTER GROUP REMOVEUSER | SET USER DISPLAYNAME Lista completa de comandos https://developer.skype.com/Docs/ApiDoc/Commands
Demo Skype API
O que você precisa para usar Skype4COM Instalação Skype: http://www.skype.com Skype4COM.dll http://developer.skype.com/accessories Precisa registrar a DLL ObjectWrapper para API Ajuda a entender os comandos da API
Objetos principais - Skype4COM Skype (ISkype) Core integration object Fornece acesso a maioria dos objetos Componente “Visual” quando importado Drop no form o crie em runtime Application (IApplication) Crie aplicações p2p usando o Skype framework IApplication tem conflito com VCL TApplication, referencie Forms.Application para evitar este problema
Demo Skype4COM Usando VCL Usando TMS Smooth Controls
Exemplos Código fonte disponível para download http://cc.embarcadero.com/Item/27742
Perguntas EDN – Embarcadero Developer Network http://edn.embarcadero.com/br   (Artigos e Vídeos) Trial Download http://www.embarcadero.com/downloads Código fonte disponível para download http://cc.embarcadero.com/Item/27742
Dados para Contato Email:Andreano.Lanusse@embarcadero.com Blog:http://www.andreanolanusse.com Twitter:http://twitter.com/andreanolanusse

More Related Content

What's hot

Визначні пам’ятки та цікаві місця Китаю : бібліо-графічний довідник
Визначні пам’ятки та цікаві місця Китаю : бібліо-графічний довідник Визначні пам’ятки та цікаві місця Китаю : бібліо-графічний довідник
Визначні пам’ятки та цікаві місця Китаю : бібліо-графічний довідник library_darnitsa
 
5 клас-урок-13
5 клас-урок-135 клас-урок-13
5 клас-урок-13AllaGureva
 
сучасний урок в початковій школі
сучасний урок в початковій школісучасний урок в початковій школі
сучасний урок в початковій школіtmvigovska
 
1 клас. "Вийди, вийди, сонечко"
1 клас. "Вийди, вийди, сонечко"1 клас. "Вийди, вийди, сонечко"
1 клас. "Вийди, вийди, сонечко"nataliyu roschina
 
Презентація до атестації Титар І.М.
Презентація до атестації Титар І.М.Презентація до атестації Титар І.М.
Презентація до атестації Титар І.М.Володимир Мартин
 
PESQUISA E EDUCAÇÃO: REFLETINDO A IMPORTÂNCIA DA PESQUISA CIENTÍFICA NO CAMPO...
PESQUISA E EDUCAÇÃO: REFLETINDO A IMPORTÂNCIA DA PESQUISA CIENTÍFICA NO CAMPO...PESQUISA E EDUCAÇÃO: REFLETINDO A IMPORTÂNCIA DA PESQUISA CIENTÍFICA NO CAMPO...
PESQUISA E EDUCAÇÃO: REFLETINDO A IMPORTÂNCIA DA PESQUISA CIENTÍFICA NO CAMPO...Tamiris Cerqueira
 
презентація заступника директора з виховної роботи
презентація заступника директора з виховної роботипрезентація заступника директора з виховної роботи
презентація заступника директора з виховної роботиТетяна Ткач
 
ПОРТФОЛІО майстра виробничого навчання
ПОРТФОЛІО майстра виробничого навчанняПОРТФОЛІО майстра виробничого навчання
ПОРТФОЛІО майстра виробничого навчанняАрина Стороженко
 

What's hot (14)

Визначні пам’ятки та цікаві місця Китаю : бібліо-графічний довідник
Визначні пам’ятки та цікаві місця Китаю : бібліо-графічний довідник Визначні пам’ятки та цікаві місця Китаю : бібліо-графічний довідник
Визначні пам’ятки та цікаві місця Китаю : бібліо-графічний довідник
 
5 клас-урок-13
5 клас-урок-135 клас-урок-13
5 клас-урок-13
 
сучасний урок в початковій школі
сучасний урок в початковій школісучасний урок в початковій школі
сучасний урок в початковій школі
 
1 клас. "Вийди, вийди, сонечко"
1 клас. "Вийди, вийди, сонечко"1 клас. "Вийди, вийди, сонечко"
1 клас. "Вийди, вийди, сонечко"
 
І.В.Луценко, Ю.М.Найда. Диференційоване викладання: реалізація підходу
І.В.Луценко, Ю.М.Найда. Диференційоване викладання: реалізація підходуІ.В.Луценко, Ю.М.Найда. Диференційоване викладання: реалізація підходу
І.В.Луценко, Ю.М.Найда. Диференційоване викладання: реалізація підходу
 
Презентація до атестації Титар І.М.
Презентація до атестації Титар І.М.Презентація до атестації Титар І.М.
Презентація до атестації Титар І.М.
 
Educação especial na ldb 2
Educação especial na ldb 2Educação especial na ldb 2
Educação especial na ldb 2
 
С.В.Назаренко. Міжпредметні зв'язки в навчанні предмета «Основи здоров´я» та ...
С.В.Назаренко. Міжпредметні зв'язки в навчанні предмета «Основи здоров´я» та ...С.В.Назаренко. Міжпредметні зв'язки в навчанні предмета «Основи здоров´я» та ...
С.В.Назаренко. Міжпредметні зв'язки в навчанні предмета «Основи здоров´я» та ...
 
PESQUISA E EDUCAÇÃO: REFLETINDO A IMPORTÂNCIA DA PESQUISA CIENTÍFICA NO CAMPO...
PESQUISA E EDUCAÇÃO: REFLETINDO A IMPORTÂNCIA DA PESQUISA CIENTÍFICA NO CAMPO...PESQUISA E EDUCAÇÃO: REFLETINDO A IMPORTÂNCIA DA PESQUISA CIENTÍFICA NO CAMPO...
PESQUISA E EDUCAÇÃO: REFLETINDO A IMPORTÂNCIA DA PESQUISA CIENTÍFICA NO CAMPO...
 
презентація заступника директора з виховної роботи
презентація заступника директора з виховної роботипрезентація заступника директора з виховної роботи
презентація заступника директора з виховної роботи
 
Презентація дисертації
Презентація дисертаціїПрезентація дисертації
Презентація дисертації
 
Capa trabalho slides
Capa trabalho slidesCapa trabalho slides
Capa trabalho slides
 
батьківський комітет 2
батьківський комітет 2батьківський комітет 2
батьківський комітет 2
 
ПОРТФОЛІО майстра виробничого навчання
ПОРТФОЛІО майстра виробничого навчанняПОРТФОЛІО майстра виробничого навчання
ПОРТФОЛІО майстра виробничого навчання
 

Similar to Integrando Skype em aplicações Delphi

Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPelliando dias
 
2290494 integrando-flex-com-php
2290494 integrando-flex-com-php2290494 integrando-flex-com-php
2290494 integrando-flex-com-phpBrenno Abreu
 
São Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom PolicesSão Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom PolicesGuilherme Pereira Silva
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...BrunoSouza617
 
Palestra UFPR - Intro Ionic framework + WordPress
Palestra UFPR - Intro Ionic framework + WordPressPalestra UFPR - Intro Ionic framework + WordPress
Palestra UFPR - Intro Ionic framework + WordPressRômulo Zoch
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5Symantec Brasil
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPRamon Ribeiro Rabello
 
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Eliel Simoncelo
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterEric Silva
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerGiovanni Kenji Shiroma
 
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasEscalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasCelso Crivelaro
 

Similar to Integrando Skype em aplicações Delphi (20)

PHP no Google AppEngine
PHP no Google AppEnginePHP no Google AppEngine
PHP no Google AppEngine
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHP
 
2290494 integrando-flex-com-php
2290494 integrando-flex-com-php2290494 integrando-flex-com-php
2290494 integrando-flex-com-php
 
São Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom PolicesSão Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
 
Apresentacao
ApresentacaoApresentacao
Apresentacao
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
 
Python 08
Python 08Python 08
Python 08
 
Palestra UFPR - Intro Ionic framework + WordPress
Palestra UFPR - Intro Ionic framework + WordPressPalestra UFPR - Intro Ionic framework + WordPress
Palestra UFPR - Intro Ionic framework + WordPress
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Um pouco sobre APIs
Um pouco sobre APIsUm pouco sobre APIs
Um pouco sobre APIs
 
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
 
Cake Php
Cake PhpCake Php
Cake Php
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHP
 
Aula 5 semana
Aula 5 semanaAula 5 semana
Aula 5 semana
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
 
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniter
 
PHP + Flex
PHP + FlexPHP + Flex
PHP + Flex
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & Docker
 
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasEscalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
 

More from Andreano Lanusse

Scaling Agile With SAFe (Scaled Agile Framework)
Scaling Agile With SAFe (Scaled Agile Framework)Scaling Agile With SAFe (Scaled Agile Framework)
Scaling Agile With SAFe (Scaled Agile Framework)Andreano Lanusse
 
Desafios na Gestão de Equipes Virtuais - Agile Brazil 2012
Desafios na Gestão de Equipes Virtuais - Agile Brazil 2012Desafios na Gestão de Equipes Virtuais - Agile Brazil 2012
Desafios na Gestão de Equipes Virtuais - Agile Brazil 2012Andreano Lanusse
 
Desenvolvendo aplicações para iPhone/iPad e Linux com Delphi Prism XE
Desenvolvendo aplicações para iPhone/iPad e Linux com Delphi Prism XEDesenvolvendo aplicações para iPhone/iPad e Linux com Delphi Prism XE
Desenvolvendo aplicações para iPhone/iPad e Linux com Delphi Prism XEAndreano Lanusse
 
Reasons to migrate to Delphi XE
Reasons to migrate to Delphi XEReasons to migrate to Delphi XE
Reasons to migrate to Delphi XEAndreano Lanusse
 
Delphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Delphi Prism for iPhone/iPad and Linux with Mono and MonotouchDelphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Delphi Prism for iPhone/iPad and Linux with Mono and MonotouchAndreano Lanusse
 
Resolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dadosResolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dadosAndreano Lanusse
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnapAndreano Lanusse
 

More from Andreano Lanusse (10)

Scaling Agile With SAFe (Scaled Agile Framework)
Scaling Agile With SAFe (Scaled Agile Framework)Scaling Agile With SAFe (Scaled Agile Framework)
Scaling Agile With SAFe (Scaled Agile Framework)
 
Desafios na Gestão de Equipes Virtuais - Agile Brazil 2012
Desafios na Gestão de Equipes Virtuais - Agile Brazil 2012Desafios na Gestão de Equipes Virtuais - Agile Brazil 2012
Desafios na Gestão de Equipes Virtuais - Agile Brazil 2012
 
Delphi Certification
Delphi CertificationDelphi Certification
Delphi Certification
 
Certificação Delphi
Certificação DelphiCertificação Delphi
Certificação Delphi
 
Desenvolvendo aplicações para iPhone/iPad e Linux com Delphi Prism XE
Desenvolvendo aplicações para iPhone/iPad e Linux com Delphi Prism XEDesenvolvendo aplicações para iPhone/iPad e Linux com Delphi Prism XE
Desenvolvendo aplicações para iPhone/iPad e Linux com Delphi Prism XE
 
Reasons to migrate to Delphi XE
Reasons to migrate to Delphi XEReasons to migrate to Delphi XE
Reasons to migrate to Delphi XE
 
Delphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Delphi Prism for iPhone/iPad and Linux with Mono and MonotouchDelphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Delphi Prism for iPhone/iPad and Linux with Mono and Monotouch
 
Delphi Prism 2011
Delphi Prism 2011Delphi Prism 2011
Delphi Prism 2011
 
Resolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dadosResolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dados
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnap
 

Recently uploaded

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 

Recently uploaded (8)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 

Integrando Skype em aplicações Delphi

  • 1. Integrando Skype em aplicações Delphi Andreano Lanusse Technical Lead Evangelist, Developer Relations
  • 2. O que é Skype? P2P Internet Telephone – VOIP Computador para Computador Computador para Telefone (SkypeOut) Telefone para Computador (Skypein) P2P Instant Messenger Tópics Históricos P2P Application Framework
  • 3. O que é Skype? Mais de 500 milhões de downloads Mais de 130 milhões de usuários ativos 4 a 8 milhões de usuários simultâneos 250000 novos usuários por dia
  • 4. O quão amigável é o Skype Delphi amigável Windows Client escrito em Delphi Usa Indy para as comunicações que não são P2P SDK Tools escrito em Delphi Algumas documentação e interfaces escritas em pascal Exemplos Delphi C++ C# VB Phyton
  • 5. Desenvolvendo para Skype Skype API Método original de integração Usa Windows Message Muito flexível Skype4COM / Skype4Java EasyObjectWrappers Menos flexível Skype Extras Plug-in Framework
  • 6. O que você precisa para usar Skype API Instalação Skype: http://www.skype.com Nenhum outro arquivo necessário Documentação API – https://developer.skype.com/Docs/ApiDoc Dev Notes - https://developer.skype.com/Docs/DevNotes Este apresentação Vamos focar no Skype API e Skype4COM
  • 7. Usando Skype API Conectando ao Skype Registrar ‘SkypeControlAPIDiscover’ windows message Registrar ‘SkypeControlAPIAttach’ windows message Broadcast ‘SkypeControlAPIDiscover’ windows message Skype responde com um ‘SkypeControlAPIAttach’ message Identificao o Protocolo de referência procedure TSkypeAPI.Connect; begin if IsSkypeInstalled then begin FSkypeAPIDiscover := RegisterWindowMessage('SkypeControlAPIDiscover'); FSkypeAPIAttach := RegisterWindowMessage('SkypeControlAPIAttach'); SendMessage(HWND_BROADCAST, FSkypeAPIDiscover, Handle, 0) end; end;
  • 8. Definindo Protocolo - Skype API Define qual protocolo usar Override WndProc procedure TSkypeAPI.WndProc(var Message: TMessage); begin if Message.Msg = FSkypeAPIAttach then begin if Message.LParam = 0 then begin FSkypeAPIWindow := Message.WParam; SendCommand('PROTOCOL '+IntTostr(FProtocol)); end else if Assigned(FOnConnectStatus) then caseMessage.LParam of 1: FOnConnectStatus(Self,csWaitingForConfirmation); 2: FOnConnectStatus(Self,csDenied); 3: FOnConnectStatus(Self,csNotAvailable); else FOnConnectStatus(Self,csNotAttached); end; Message.Result := 1 end else inherited; end;
  • 9. Send Command - Skype API Definir parâmetros através da estrutura CopyDataStruct procedure TSkypeAPI.SendCommand(Str: String); var CopyData: CopyDataStruct; begin if Str <> '' then begin CopyData.dwData := 0; CopyData.lpData := PChar(Str); CopyData.cbData := Length(Str)+1; SendMessage(FSkypeAPIWindow, WM_COPYDATA, Self.Handle,LPARAM(@CopyData)); end; end;
  • 10. Receive Command - Skype API Espere pelo WM_COPYDATA message lpData recebe o comando como PAnsiChar procedure TSkypeAPI.WMCopyData(var Message: TWMCopyData); var msg : String; begin if (Message.From = FSkypeAPIWindow) and (FSkypeAPIWindow > 0) then begin msg := PAnsiChar(Message.CopyDataStruct.lpData) Message.Result := 1 end; end;
  • 11. Skype API Wrapper Jason Southwell e Dr. Bob criaram o componente TSkypeAPI Skype API wrapper Código disponível no CodeCentral, facilita o uso do Skype API
  • 12. Comandos - Skype API Phone Control AUDIO IN | OUT, HOOK ON | OFF, MUTE ON | OFF, BTN_PRESSED, BTN_RELEASED Voice Calls CALL | GET CALL | SET CALL INPROGRESS | SET CALL FINISHED | SET CALL ONHOLD | SET CALL JOIN CONFERENCE | SET CALL DTMF | SET CALL SEEN | ALTER CALL | GET CALL CAN TRANSFER | ALTER CALL TRANSFER Managing call forwarding GET PROFILE CALL APPLY CF | SET PROFILE CALL APPLY CF | GET PROFILE CALL FORWARD RULES | SET PROFILE CALL FORWARD RULES | GET PROFILE CALL NOANSWER TIMEOUT | SET PROFILE CALL NOANSWER TIMEOUT | GET PROFILE CALL SEND TO VM | SET PROFILE CALL SEND TO VM |
  • 13. Comandos - Skype API Sending and managing SMS messages CREATE SMS | SET SMS BODY | ALTER SMS SEND | SET SMS SEEN | SET SMS REPLY TO NUMBER | SET SMS TARGET NUMBERS Custom Application Communication AP2AP CREATE | AP2AP CONNECT | AP2AP WRITE | AP2AP DATAGRAM | AP2AP READ | AP2AP DISCONNECT | AP2AP DELETE Making and managing video calls GET VIDEO IN | SET VIDEO IN | GET CALL VIDEO STATUS | ALTER CALL VIDEO SEND | ALTER CALL VIDEO RECEIVE | GET CALL VIDEO SEND STATUS | GET CALL VIDEO RECEIVE STATUS | IS VIDEO CAPABLE | OPEN VIDEOTEST | OPEN OPTIONS VIDEO
  • 14. Comandos - Skype API Managing contacts and groups GET GROUP USERS | GET GROUP VISIBLE | GET GROUP EXPANDED | GET GROUP DISPLAYNAME | SET GROUP DISPLAYNAME | GET GROUP TYPE | CREATE GROUP | DELETE GROUP | ALTER GROUP ADDUSER | ALTER GROUP REMOVEUSER | SET USER DISPLAYNAME Lista completa de comandos https://developer.skype.com/Docs/ApiDoc/Commands
  • 16. O que você precisa para usar Skype4COM Instalação Skype: http://www.skype.com Skype4COM.dll http://developer.skype.com/accessories Precisa registrar a DLL ObjectWrapper para API Ajuda a entender os comandos da API
  • 17. Objetos principais - Skype4COM Skype (ISkype) Core integration object Fornece acesso a maioria dos objetos Componente “Visual” quando importado Drop no form o crie em runtime Application (IApplication) Crie aplicações p2p usando o Skype framework IApplication tem conflito com VCL TApplication, referencie Forms.Application para evitar este problema
  • 18. Demo Skype4COM Usando VCL Usando TMS Smooth Controls
  • 19. Exemplos Código fonte disponível para download http://cc.embarcadero.com/Item/27742
  • 20. Perguntas EDN – Embarcadero Developer Network http://edn.embarcadero.com/br (Artigos e Vídeos) Trial Download http://www.embarcadero.com/downloads Código fonte disponível para download http://cc.embarcadero.com/Item/27742
  • 21. Dados para Contato Email:Andreano.Lanusse@embarcadero.com Blog:http://www.andreanolanusse.com Twitter:http://twitter.com/andreanolanusse