<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Consulta de IP Público + Meu IP e IPinfo.io (Alexa) - PT-BR]]></title><description><![CDATA[<p dir="auto"><strong>INTRODUÇÃO</strong></p>
<p dir="auto">Este tutorial demonstra como utilizar o <strong>TRIGGERcmd</strong> para executar um script PowerShell capaz de consultar o endereço IP Público de um Provedor de Internet - ISP, através de um computador e retornar o resultado para o TRIGGERcmd.</p>
<p dir="auto">A solução utiliza duas APIs:</p>
<ul>
<li><strong>MEU IP</strong> -  responsável por obter o endereço IP Público.</li>
<li><strong><a href="http://IPinfo.io" rel="nofollow ugc">IPinfo.io</a></strong> - responsável por identificar a Organização / ISP associada ao endereço IP.</li>
</ul>
<p dir="auto">O resultado final será enviado ao TRIGGERcmd no seguinte formato:</p>
<pre><code class="language-text">$RESULTADO_MEUIP - $ORGANIZAÇÃO
</code></pre>
<p dir="auto">Por exemplo:</p>
<pre><code class="language-text">123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
</code></pre>
<p dir="auto">O resultado poderá então ser utilizado pelo recurso <strong>Voice/MCP Reply</strong>, permitindo que o Alexa fale a informação ao usuário.</p>
<hr />
<h1>1 - COMO FUNCIONA:</h1>
<p dir="auto">O funcionamento da solução é dividido em etapas:</p>
<pre><code class="language-text">ALEXA
   ↓
TRIGGERcmd
   ↓
POWERSHELL
   ↓
MEU IP API
   ↓
ENDEREÇO IP PÚBLICO
   ↓
IPINFO.IO API
   ↓
ORGANIZAÇÃO / ISP
   ↓
POWERSHELL
   ↓
SendResult.bat
   ↓
TRIGGERcmd
   ↓
{{result}}
   ↓
ALEXA
</code></pre>
<p dir="auto">O PowerShell é responsável pela lógica principal.</p>
<p dir="auto">O <code>SendResult.bat</code> é responsável por enviar o resultado processado de volta para o TRIGGERcmd.</p>
<hr />
<h1>2 - PRÉ-REQUISITOS:</h1>
<p dir="auto">Antes de começar, você deverá possuir:</p>
<ul>
<li>Uma conta no TRIGGERcmd.</li>
<li>O TRIGGERcmd Agent instalado no computador.</li>
<li>PowerShell disponível no Windows.</li>
<li>Acesso à Internet.</li>
<li>Um comando configurado no TRIGGERcmd.</li>
<li>O arquivo <code>SendResult.bat</code> disponível no diretório do TRIGGERcmd.</li>
<li>Skills ativas: TRIGGERcmd Smart Home e Execute Comando</li>
</ul>
<p dir="auto">O diretório utilizado pelo TRIGGERcmd neste projeto é:</p>
<pre><code class="language-text">%USERPROFILE%\.TRIGGERcmdData\
</code></pre>
<hr />
<h1>3 - ARQUIVO SendResult.bat:</h1>
<p dir="auto">O <code>SendResult.bat</code> é responsável por enviar o resultado do comando para a API do TRIGGERcmd.</p>
<p dir="auto">O arquivo deve estar localizado em:</p>
<pre><code class="language-text">%USERPROFILE%\.TRIGGERcmdData\SendResult.bat
</code></pre>
<p dir="auto">Exemplo:</p>
<pre><code>@echo off

if "%~1"=="" goto noparams
goto yesparams

:noparams
echo You need to specify the command result as a quoted sentence.
echo Example:
echo SendResult.bat "This is the result of my command."
goto end

:yesparams

set /p TCMD_TOKEN=&lt;"%USERPROFILE%\.TRIGGERcmdData\token.tkn"

curl -X POST "https://www.triggercmd.com/api/command/result" ^
-H "Authorization: Bearer %TCMD_TOKEN%" ^
-H "content-type: multipart/form-data" ^
-F "computer_id=%TCMD_COMPUTER_ID%" ^
-F "command_id=%TCMD_COMMAND_ID%" ^
-F "result=%~1" ^
&gt;&gt;"%USERPROFILE%\.TRIGGERcmdData\results.log" 2&gt;&amp;1

:end
</code></pre>
<p dir="auto"><img src="/forum/assets/uploads/files/1788796142081-sendresult.jpeg" alt="SendResult.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto"><strong>IMPORTANTE:</strong> não é necessário modificar esse arquivo para utilizar o script deste tutorial - Caso queira substituir o conteúdo, não há problema.</p>
<hr />
<h1>4 - CRIANDO O SCRIPT POWERSHELL:</h1>
<p dir="auto">Crie um arquivo com a extensão:</p>
<pre><code class="language-text">.ps1
</code></pre>
<p dir="auto">Por exemplo (C:\SCRIPTS\IP_PUBLICO.ps1):</p>
<pre><code class="language-text">IP_PUBLICO.ps1
</code></pre>
<p dir="auto">Utilize o seguinte código:</p>
<pre><code># =====================================================================
# NOME DO PROJETO         : CONSULTA DE IP PÚBLICO - TRIGGERcmd
# AUTOR                   : IGOR NETH DOS SANTOS
# ALMA MATER              : UniCesumar - Superior de Tecnologia em Redes de Computadores (2015 - 2018)
# APOIO                   : EDSON ALEXANDRE DOMINGUES MORENO - Professor Moreno
# PAÍS                    : BRASIL
# VERSÃO                  : 1.1.0
# DATA                    : 03/09/2026 - 3 de Setembro de 2026
#
# DESCRIÇÃO:
#    ESTE SCRIPT CONSULTA O ENDEREÇO IP PÚBLICO ATRAVÉS DA API DO SITE MEU IP
#    E CONSULTA A ORGANIZAÇÃO RESPONSÁVEL PELO IP ATRAVÉS DA API IPINFO.IO.
#
#    O RESULTADO FINAL É ENVIADO PARA O TRIGGERCMD ATRAVÉS DO SendResult.bat.
#
# SITE MEU IP: https://meuip.com | API MEU IP: https://meuip.com/api/meuip.php
#
# SITE IPINFO: https://ipinfo.io | API IPINFO: https://ipinfo.io
#
# FORMATO DO RESULTADO: IP - ORGANIZAÇÃO | EXEMPLO: 123.456.789.123 - NOME DO ASN
#
# OBSERVAÇÃO:
#    A API IPINFO.IO RETORNA O PARÂMETRO "org" NO SEGUINTE FORMATO:
#
#    AS123456 XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
#
#    O SCRIPT REMOVE AUTOMATICAMENTE O PREFIXO "AS" E OS NÚMEROS,
#    MANTENDO SOMENTE O NOME DA ORGANIZAÇÃO:
#
# OBSERVAÇÃO:
#    O SCRIPT ENVIA O RESULTADO PARA O TRIGGERCMD SEM A FRASE EM
#    PORTUGUÊS QUE SERÁ FALADA PELA ALEXA.
#
#    A FRASE QUE SERÁ FALADA PELA ALEXA É CONFIGURADA DIRETAMENTE
#    NO CAMPO "VOICE/MCP REPLY" DO TRIGGERCMD, UTILIZANDO {{result}}.
#
# EXEMPLO DE VOICE/MCP REPLY: SEU IP PÚBLICO É: {{result}}
#
# RESULTADO ENVIADO PELO SCRIPT: 123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
#
# HISTÓRICO DE VERSÕES:
#    1.0.0 - VERSÃO INICIAL FUNCIONAL.
#    1.1.0 - ADICIONADA CONSULTA À API IPINFO.IO PARA OBTER A ORGANIZAÇÃO.
# =====================================================================


# DEFINE O PROTOCOLO DE SEGURANÇA TLS 1.2 PARA AS CONEXÕES HTTPS.
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12


# MONTA AUTOMATICAMENTE O CAMINHO COMPLETO DO ARQUIVO SENDRESULT.BAT.
# $ENV:USERPROFILE REPRESENTA A PASTA DO USUÁRIO ATUALMENTE CONECTADO AO WINDOWS.
$SENDRESULT = Join-Path $env:USERPROFILE ".TRIGGERcmdData\SendResult.bat"


# INICIA O BLOCO PRINCIPAL DE TRATAMENTO DE ERROS.
try {

    # ================================================================
    # CONSULTA A API DO MEU IP PARA OBTER O ENDEREÇO IP PÚBLICO.
    # ================================================================
    #
    # -URI:
    #   DEFINE O ENDEREÇO DA API QUE SERÁ CONSULTADA.
    #
    # -TIMEOUTSEC 3:
    #   DEFINE UM LIMITE DE 3 SEGUNDOS PARA A RESPOSTA DA API.
    #
    # -ERRORACTION STOP:
    #   FAZ COM QUE UM ERRO NA CONSULTA SEJA TRATADO PELO CATCH.
    $RESPOSTA_MEUIP = Invoke-RestMethod -Uri "https://meuip.com/api/meuip.php" -TimeoutSec 3 -ErrorAction Stop


    # CONVERTE A RESPOSTA RECEBIDA DA API PARA TEXTO.
    #
    # OUT-STRING:
    #   CONVERTE O CONTEÚDO RETORNADO PARA UMA STRING.
    #
    # TRIM():
    #   REMOVE ESPAÇOS E QUEBRAS DE LINHA NO INÍCIO OU NO FINAL.
    $IP_PUBLICO = ($RESPOSTA_MEUIP | Out-String).Trim()


    # ================================================================
    # VERIFICA SE A RESPOSTA POSSUI O FORMATO DE UM ENDEREÇO IPV4.
    # ================================================================
    #
    # A EXPRESSÃO REGULAR VERIFICA SE EXISTEM QUATRO GRUPOS NUMÉRICOS
    # SEPARADOS POR PONTOS.
    #
    # EXEMPLO DE FORMATO ESPERADO: 123.456.789.123
    if ($IP_PUBLICO -match '^\d{1,3}(\.\d{1,3}){3}$') {


        # ============================================================
        # CONSULTA A API DO IPINFO.IO.
        # ============================================================
        #
        # O IP OBTIDO ATRAVÉS DO MEU IP É INFORMADO DIRETAMENTE NA URL.
        #
        # EXEMPLO:
        #    https://ipinfo.io/123.456.789.123
        #
        # O OBJETIVO É OBTER AS INFORMAÇÕES REFERENTES EXATAMENTE AO
        # ENDEREÇO IP QUE FOI RETORNADO PELA API DO MEU IP.
        try {

            $RESPOSTA_IPINFO = Invoke-RestMethod -Uri "https://ipinfo.io/$IP_PUBLICO" -TimeoutSec 3 -ErrorAction Stop


            # O PARÂMETRO "org" DA API IPINFO RETORNA, POR EXEMPLO:
            #
            #    AS123456 XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
            #
            # REMOVE:
            #    AS123456
            #
            # E MANTÉM:
            #    XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
            $ORGANIZACAO = $RESPOSTA_IPINFO.org -replace '^AS\d+\s+', ''


            # MONTA O RESULTADO FINAL QUE SERÁ ENVIADO AO TRIGGERCMD.
            #
            # EXEMPLO:
            #    123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
            $RESULTADO_MEUIP = "$IP_PUBLICO - $ORGANIZACAO"
        }


        # CASO A API IPINFO.IO NÃO RESPONDA OU OCORRA ALGUM ERRO,
        # O SCRIPT MANTÉM O IP OBTIDO ATRAVÉS DA API DO MEU IP.
        catch {

            # ENVIA SOMENTE O ENDEREÇO IP COMO RESULTADO.
            $RESULTADO_MEUIP = "$IP_PUBLICO"
        }
    }


    # ================================================================
    # CASO A RESPOSTA DA API DO MEU IP NÃO TENHA FORMATO DE IPV4.
    # ================================================================
    else {

        # DEFINE UMA MENSAGEM INFORMANDO QUE A RESPOSTA DA API
        # NÃO CORRESPONDEU AO FORMATO ESPERADO.
        $RESULTADO_MEUIP = "A API retornou uma resposta invalida."
    }
}


# ================================================================
# CAPTURA ERROS OCORRIDOS DURANTE A CONSULTA DO MEU IP.
# ================================================================
catch {

    # DEFINE UMA MENSAGEM INFORMANDO QUE NÃO FOI POSSÍVEL
    # CONSULTAR O ENDEREÇO IP PÚBLICO.
    $RESULTADO_MEUIP = "Nao foi possivel consultar o seu IP Publico."
}


# ================================================================
# ENVIA O RESULTADO PARA O TRIGGERCMD.
# ================================================================
#
# $SENDRESULT:
#    CONTÉM O CAMINHO COMPLETO PARA O ARQUIVO SENDRESULT.BAT.
#
# "$RESULTADO_MEUIP":
#    PASSA O RESULTADO COMO ARGUMENTO PARA O ARQUIVO BAT.
#
# EXEMPLO DO VALOR ENVIADO:
#
#    123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
#
# IMPORTANTE:
#    O SCRIPT NÃO ENVIA A FRASE "SEU IP PÚBLICO É".
#    ESSA FRASE DEVE SER CONFIGURADA NO TRIGGERCMD EM VOICE/MCP REPLY".
&amp; $SENDRESULT "$RESULTADO_MEUIP"


# ENCERRA O SCRIPT POWERSHELL INFORMANDO QUE A EXECUÇÃO FOI
# CONCLUÍDA NORMALMENTE.
#
# O CÓDIGO 0 INDICA EXECUÇÃO CONCLUÍDA COM SUCESSO.
exit 0
</code></pre>
<h1>5 - ENTENDENDO O SCRIPT:</h1>
<h2>5.1 - Configuração do TLS</h2>
<pre><code class="language-powershell">[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
</code></pre>
<p dir="auto">Essa configuração força o uso do <strong>TLS 1.2</strong> para as conexões HTTPS realizadas pelo PowerShell.</p>
<hr />
<h1>6 - LOCALIZAÇÃO DO SendResult.bat:</h1>
<p dir="auto">O script identifica automaticamente o arquivo <code>SendResult.bat</code> utilizando:</p>
<pre><code class="language-powershell">$SENDRESULT = Join-Path $env:USERPROFILE ".TRIGGERcmdData\SendResult.bat"
</code></pre>
<p dir="auto">Isso evita colocar um caminho absoluto como:</p>
<pre><code class="language-text">C:\Users\NomeDoUsuario\...
</code></pre>
<p dir="auto">Dessa forma, o script pode ser utilizado por diferentes usuários do Windows.</p>
<hr />
<h1>7 - CONSULTANDO O IP PÚBLICO - MEU IP:</h1>
<p dir="auto">A primeira API utilizada é:</p>
<pre><code class="language-text">https://meuip.com/api/meuip.php
</code></pre>
<p dir="auto">O PowerShell executa:</p>
<pre><code class="language-powershell">$RESPOSTA_MEUIP = Invoke-RestMethod -Uri "https://meuip.com/api/meuip.php" -TimeoutSec 3 -ErrorAction Stop
</code></pre>
<p dir="auto">Depois, o resultado é armazenado em:</p>
<pre><code class="language-powershell">$IP_PUBLICO
</code></pre>
<hr />
<h1>8 - VALIDANDO O ENDEREÇO IP:</h1>
<p dir="auto">O script verifica se a resposta possui o formato básico de um endereço IPv4:</p>
<pre><code class="language-powershell">if ($IP_PUBLICO -match '^\d{1,3}(\.\d{1,3}){3}$')
</code></pre>
<p dir="auto">Se a resposta for considerada válida, o script continua para a consulta no <a href="http://IPinfo.io" rel="nofollow ugc">IPinfo.io</a>.</p>
<hr />
<h1>9 - CONSULTANDO A ORGANIZAÇÂO - <a href="http://IPINFO.IO" rel="nofollow ugc">IPINFO.IO</a>:</h1>
<p dir="auto">Depois de obter o endereço IP, o script consulta a segunda API:</p>
<pre><code class="language-text">https://ipinfo.io/$IP_PUBLICO
</code></pre>
<p dir="auto">Por exemplo:</p>
<pre><code class="language-text">https://ipinfo.io/123.456.789.123
</code></pre>
<p dir="auto">O resultado é armazenado em:</p>
<pre><code class="language-powershell">$RESPOSTA_IPINFO
</code></pre>
<hr />
<h1>10 - OBTENDO A ORGANIZAÇÃO - ISP:</h1>
<p dir="auto">O campo utilizado pelo script é:</p>
<pre><code class="language-text">org
</code></pre>
<p dir="auto">O <a href="http://IPinfo.io" rel="nofollow ugc">IPinfo.io</a> pode retornar algo semelhante a:</p>
<pre><code class="language-text">AS123456 XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
</code></pre>
<p dir="auto">O script remove automaticamente o ASN:</p>
<pre><code class="language-powershell">$ORGANIZACAO = $RESPOSTA_IPINFO.org -replace '^AS\d+\s+', ''
</code></pre>
<p dir="auto">O resultado passa a ser:</p>
<pre><code class="language-text">O NOME DO SEU ASN OU PROVEDOR DE INTERNET
</code></pre>
<hr />
<h1>11 - MONTANDO O RESULTADO FINAL:</h1>
<p dir="auto">O script combina o endereço IP e a organização:</p>
<pre><code class="language-powershell">$RESULTADO_MEUIP = "$IP_PUBLICO - $ORGANIZACAO"
</code></pre>
<p dir="auto">Resultado:</p>
<pre><code class="language-text">123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
</code></pre>
<hr />
<h1>12 - TRATAMENTO DE FALHA DO <a href="http://IPINFO.IO" rel="nofollow ugc">IPINFO.IO</a>:</h1>
<p dir="auto">Uma característica importante desta implementação é que o <a href="http://IPinfo.io" rel="nofollow ugc">IPinfo.io</a> possui seu próprio <code>try/catch</code>.</p>
<p dir="auto">Isso significa que, se o <a href="http://IPinfo.io" rel="nofollow ugc">IPinfo.io</a> estiver indisponível, o script ainda poderá retornar o IP público obtido pelo MEU IP.</p>
<p dir="auto">Nesse caso:</p>
<pre><code class="language-text">123.456.789.123
</code></pre>
<p dir="auto">será enviado ao TRIGGERcmd.</p>
<p dir="auto">Assim, uma falha secundária não impede completamente a execução do comando.</p>
<hr />
<h1>13 - ENVIANDO O RESULTADO PARA O TRIGGERcmd:</h1>
<p dir="auto">Depois de processar as informações, o script executa:</p>
<pre><code class="language-powershell">&amp; $SENDRESULT "$RESULTADO_MEUIP"
</code></pre>
<p dir="auto">Isso chama o:</p>
<pre><code class="language-text">SendResult.bat
</code></pre>
<p dir="auto">e envia o conteúdo de <code>$RESULTADO_MEUIP</code> para o TRIGGERcmd.</p>
<hr />
<h1>14 - CONFIGURANDO O COMANDO NO TRIGGERcmd:</h1>
<p dir="auto">No TRIGGERcmd, crie ou edite um comando para executar o PowerShell.</p>
<p dir="auto">O comando deverá executar o arquivo <code>.ps1</code>.</p>
<p dir="auto">Por exemplo:</p>
<pre><code class="language-text">powershell.exe -ExecutionPolicy Bypass -File "C:\SCRIPTS\IP_PUBLICO.ps1"
</code></pre>
<p dir="auto">Substitua o caminho pelo local onde você salvou o script.</p>
<hr />
<h1>15 - CONFIGURANDO O VOICE/MCP REPLY:</h1>
<p dir="auto">Para utilizar o resultado com Alexa, configure o campo:</p>
<pre><code class="language-text">Voice/MCP Reply
</code></pre>
<p dir="auto">Utilize:</p>
<pre><code class="language-text">Seu IP Público é: {{result}}
</code></pre>
<p dir="auto">O <code>{{result}}</code> será substituído automaticamente pelo resultado enviado pelo script.</p>
<p dir="auto">Por exemplo, se o PowerShell enviar:</p>
<pre><code class="language-text">123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
</code></pre>
<p dir="auto">a resposta poderá ser:</p>
<pre><code class="language-text">Seu IP Público é: 123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
</code></pre>
<hr />
<h1>16 - POR QUE A FRASE NÃO É ENVIADA PELO POWERSHELL?</h1>
<p dir="auto">Nesta implementação, o PowerShell envia somente os dados:</p>
<pre><code class="language-text">IP - ORGANIZAÇÃO
</code></pre>
<p dir="auto">A frase em português é configurada diretamente no TRIGGERcmd.</p>
<p dir="auto">Isso possui uma vantagem importante: evita problemas de codificação de caracteres entre PowerShell, Windows, <code>SendResult.bat</code> e a API.</p>
<p dir="auto">Por exemplo, caracteres como:</p>
<pre><code class="language-text">A: á, à, â, ã, Á, À, Â, Ã
E: é, ê, É, Ê
I: í, Í
O: ó, ô, õ, Ó, Ô, Õ
U: ú, Ú
Cedilha: ç, Ç (usado com a letra c)
Trema: ¨
</code></pre>
<p dir="auto">podem sofrer alterações dependendo da codificação utilizada durante o processamento.</p>
<p dir="auto">Por isso, a solução separa:</p>
<p dir="auto"><strong>DADOS:</strong></p>
<pre><code class="language-text">123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
</code></pre>
<p dir="auto"><strong>RESPOSTA DE VOZ:</strong></p>
<pre><code class="language-text">Seu IP Público é: {{result}}
</code></pre>
<hr />
<h1>17 - TESTANDO:</h1>
<p dir="auto">Antes de utilizar Alexa, recomenda-se testar o script diretamente no Windows.</p>
<p dir="auto">Execute:</p>
<pre><code class="language-powershell">powershell.exe -ExecutionPolicy Bypass -File "C:\SCRIPTS\IP_PUBLICO.ps1"
</code></pre>
<p dir="auto">Depois, verifique o resultado no TRIGGERcmd.</p>
<p dir="auto">O resultado esperado será semelhante a:</p>
<pre><code class="language-text">123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
</code></pre>
<hr />
<h1>18 - TESTANDO COM ALEXA:</h1>
<p dir="auto">Depois que o comando estiver funcionando no TRIGGERcmd, execute o comando através da integração de voz configurada.</p>
<p dir="auto">A Alexa deverá utilizar o conteúdo de:</p>
<pre><code class="language-text">{{result}}
</code></pre>
<p dir="auto">para gerar a resposta.</p>
<p dir="auto">Exemplo:</p>
<pre><code class="language-text">Seu IP Público é: 123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
</code></pre>
<hr />
<h1>19 - ESTRUTURA FINAL:</h1>
<p dir="auto">A solução completa fica organizada da seguinte maneira:</p>
<pre><code class="language-text">TRIGGERcmd
│
├── Trigger:
│       └── IP Público
│
├── Command:
│       └── powershell -ExecutionPolicy Bypass -File "C:\SCRIPTS\IP_PUBLICO.ps1"
│
├── Ground:
│       └── Foreground
│
├── Voice:
│       └── Rede
│
├── Voice/MCP Reply:
│       └── Seu IP Público é: {{result}}
│
├── MCP Tool Description:
│       └── Consulta o IP Público
│
├── Permitir Parâmetros:
│       └── False
│
└── Computador Windows
        │
        └── PowerShell
                │
                ├── MEU IP API
                │       └── IP Público
                │
                ├── IPinfo.io API
                │       └── Organização
                │
                └── SendResult.bat
                        └── TRIGGERcmd Result
</code></pre>
<p dir="auto"><img src="/forum/assets/uploads/files/1788791921012-triggercmd.jpeg" alt="TRIGGERcmd.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="/forum/assets/uploads/files/1788796942000-triggercmd2.jpeg" alt="TRIGGERcmd2.jpeg" class=" img-fluid img-markdown" /></p>
<hr />
<h1>20 - CRIAR ROTINA PERSONALIZADA NA ALEXA:</h1>
<p dir="auto">A rotina completa fica organizada da seguinte maneira:</p>
<pre><code class="language-text">ROTINA
│
├── Nome:
│     └── Abrir Rede
│
├── Quando:
│     └── Voz
│           ├── Abrir Rede
│           └── Qual é minha Rede
│
└── Alexa Vai:
      └── Personalizar
            └── pergunte à Execute Comando para executar Rede
</code></pre>
<p dir="auto"><img src="/forum/assets/uploads/files/1788792872750-img_0853.png" alt="IMG_0853.PNG" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="/forum/assets/uploads/files/1788795085203-img_0854.png" alt="IMG_0854.PNG" class=" img-fluid img-markdown" /></p>
<p dir="auto"><strong>Para seu Dispositivo Alexa, pergunte à ela: "Alexa, abrir Rede"</strong></p>
<hr />
<h1>21 - CHECAR A EXECUÇÂO EM SUA LISTA DE TRIGGERS:</h1>
<p dir="auto">A execução do comando de Voz e a execução da Trigger será mostrada em Ver Execuções.<br />
<img src="/forum/assets/uploads/files/1788793306053-ip.jpeg" alt="IP.jpeg" class=" img-fluid img-markdown" /></p>
<hr />
<h1>22 - CONSIDERAÇÕES FINAIS:</h1>
<p dir="auto">Esta implementação foi desenvolvida com foco em simplicidade, reutilização e compatibilidade com o ambiente Windows + TRIGGERcmd.</p>
<p dir="auto">O objetivo não é apenas consultar um endereço IP, mas demonstrar como um script PowerShell pode:</p>
<ol>
<li>Consumir uma API externa.</li>
<li>Processar uma resposta.</li>
<li>Consumir uma segunda API.</li>
<li>Manipular os dados recebidos.</li>
<li>Tratar falhas de serviços externos.</li>
<li>Enviar o resultado para o TRIGGERcmd.</li>
<li>Utilizar <code>{{result}}</code> em uma resposta de voz.</li>
</ol>
<p dir="auto">A estrutura também permite que outras APIs sejam adicionadas futuramente, mantendo o mesmo conceito de integração.</p>
<hr />
<h3>Nota de rodapé</h3>
<p dir="auto"><strong>Autor:</strong> Igor Neth dos Santos<br />
<strong>Alma Mater:</strong> UniCesumar - Superior de Tecnologia em Redes de Computadores (2015 - 2018)<br />
<strong>Apoio:</strong> Edson Alexandre Domingues Moreno - Professor Moreno<br />
<strong>País:</strong> Brasil<br />
<strong>Projeto:</strong> Consulta de IP Público - TRIGGERcmd<br />
<strong>Versão:</strong> 1.1.0</p>
<p dir="auto"><img src="https://www.triggercmd.com/forum/assets/plugins/nodebb-plugin-emoji/emoji/android/1f310.png?v=6297cc46437" class="not-responsive emoji emoji-android emoji--globe_with_meridians" style="height:23px;width:auto;vertical-align:middle" title=":globe_with_meridians:" alt="🌐" /> LinkedIn:<br />
<a href="https://www.linkedin.com/in/igorneth" rel="nofollow ugc">https://www.linkedin.com/in/igorneth</a><br />
<a href="https://www.linkedin.com/in/alexandre-moreno-a35b74100" rel="nofollow ugc">https://www.linkedin.com/in/alexandre-moreno-a35b74100</a></p>
<p dir="auto">Este projeto foi desenvolvido com o auxílio e orientação do meu Professor, <strong>Edson Alexandre Domingues Moreno  - Professor Moreno</strong>, a quem agradeço pelo apoio técnico e pela contribuição durante o desenvolvimento e testes da solução.</p>
]]></description><link>https://www.triggercmd.com/forum/topic/3385/consulta-de-ip-público-meu-ip-e-ipinfo.io-alexa-pt-br</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 07:55:29 GMT</lastBuildDate><atom:link href="https://www.triggercmd.com/forum/topic/3385.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Sep 2026 16:04:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Consulta de IP Público + Meu IP e IPinfo.io (Alexa) - PT-BR on Tue, 08 Sep 2026 01:18:07 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/igorneth" aria-label="Profile: igorneth">@<bdi>igorneth</bdi></a> nice job!</p>
]]></description><link>https://www.triggercmd.com/forum/post/8965</link><guid isPermaLink="true">https://www.triggercmd.com/forum/post/8965</guid><dc:creator><![CDATA[Russ]]></dc:creator><pubDate>Tue, 08 Sep 2026 01:18:07 GMT</pubDate></item></channel></rss>