Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo obtener el enlace en la operación de configuración del menú personalizado de la plataforma pública WeChat desde el software de desarrollo (como Microelectronics)?

¿Cómo obtener el enlace en la operación de configuración del menú personalizado de la plataforma pública WeChat desde el software de desarrollo (como Microelectronics)?

uno. Descripción general:

Si solo hay un cuadro de entrada, puede ser demasiado simple y parecer una línea de comando. El menú personalizado nos brinda mucha flexibilidad y está más acorde con los hábitos operativos de los usuarios. En la pequeña página de conversación de WeChat, se pueden implementar más funciones. El menú es muy intuitivo y no solo proporciona respuesta a eventos, sino que también admite el salto de URL. Si se necesitan funciones más complejas, podemos usar el salto de URL directamente para saltar a nuestra página web.

Nota: en el menú personalizado, solo las cuentas de servicio tienen esta función.

Cómo registrarse, consulte el Capítulo 1: Tutorial de desarrollo de cuentas públicas de WeChat (1) Principios básicos y cuentas públicas de WeChat Registro

El efecto es el siguiente:

A continuación, presentaremos en detalle cómo implementar un menú personalizado.

2. Pasos detallados:

1. Primero obtenga el token de acceso.

El token de acceso es el ticket único global de la cuenta oficial. El token de acceso es necesario. Cuenta oficial para llamar a cada interfaz. En circunstancias normales, el token de acceso es válido durante 7200 segundos. Las visitas repetidas darán como resultado la obtención del último token de acceso. En circunstancias normales, el período de validez de access_token es de 7200 segundos. La adquisición repetida hará que el último access_token deje de ser válido.

La cuenta pública puede usar AppID y AppSecret para llamar a esta interfaz y obtener el token de acceso. Esta interfaz se puede obtener en modo de desarrollo (debe ser desarrollador y la cuenta no tiene un estado anormal). Tenga en cuenta que llamar a todas las interfaces WeChat requiere /cgi-bin/token?grant_type=client_credentialamp;appid=APPIDamp;secret=APPSECRET

Descripción de parámetros

Parámetros

¿Es necesario?

Explicación

grant_type es obtener el token de acceso para completar las credenciales del cliente

appid son las únicas credenciales para usuarios de terceros

secret es la clave de credencial única para usuarios externos, todos son appsecret

Instrucciones de devolución Normalmente, WeChat devolverá el siguiente paquete de datos JSON a la cuenta oficial:

{"access_token" : "ACCESS_TOKEN", "expires_in": 7200}

Parámetros

Descripción

"access_token "es el certificado recuperado

" secreto " es la clave de credencial única del usuario externo appsecret.

expires_in Tiempo de validez del cupón (segundos)

Si ocurre un error, WeChat devolverá un código de error y otra información. El ejemplo del paquete de datos JSON es el siguiente (este ejemplo no es válido). Error de AppID):

p>

{"errcode": 40013, "errmsg": "invalid appid"}

2. Crea un menú personalizado

Los menús personalizados pueden ayudar a las cuentas oficiales a enriquecer sus interfaces, permitiendo a los usuarios comprender mejor y más rápido las funciones de las cuentas oficiales. Después de abrir el menú personalizado, la interfaz de la cuenta oficial es como se muestra en la figura:

Actualmente, el menú personalizado contiene hasta 3 menús de primer nivel, y cada menú de primer nivel contiene hasta 5 menús de segundo nivel. menús de nivel. El número máximo de caracteres en el menú de primer nivel es 4 y el número máximo de caracteres en el menú de segundo nivel es 7. Los caracteres sobrantes serán reemplazados por "...". Tenga en cuenta que después de crear un menú personalizado, el cliente WeChat tardará 24 horas en mostrarse debido al caché del cliente WeChat.

Se recomienda que intente dejar de seguir la cuenta pública y luego seguirla nuevamente para ver el efecto después de la creación.

Actualmente, la interfaz del menú personalizado puede implementar dos tipos de botones, de la siguiente manera:

Clic:

Después de que el usuario hace clic en el botón de tipo clic, WeChat server Se enviará un mensaje al desarrollador a través de la interfaz de mensajes. El tipo de mensaje es una estructura de evento (consulte la guía de la interfaz de mensajes) y el valor clave completado por el desarrollador en el botón se conectará al desarrollador. El desarrollador puede utilizar el valor clave personalizado para conectarse con el desarrollador. Para comunicarse con los usuarios, los usuarios pueden utilizar valores clave.

Ver:

Cuando el usuario hace clic en el botón Ver, el cliente WeChat abrirá el valor de la URL (es decir, el enlace web) completado por el desarrollador en el botón. Abra una página web. Se recomienda combinarlo con la autorización de la página web para obtener información básica de la interfaz de usuario y obtener la información personal de inicio de sesión del usuario.

Descripción de la solicitud de llamada de interfaz

/cgi-bin/menu/create?access_token=ACCESS_TOKEN

Solicitud de ejemplo

{

"botón": [

{

"tipo": "clic",

"nombre": "Canción del día",

"key": "V1001_TODAY_MUSIC"

},

{

"type": "clic",

"name": "Perfil del cantante",

"key": "V1001_TODAY_SINGER"

},

{

"nombre": "menú",

"sub_button": [

{

"tipo": "ver",

"nombre": "Buscar",

"url": "/"

},

{

"tipo": "ver",

"nombre": "vídeo",

"url": "/"

},

{

"type": "clic",

"name": "Me gusta",

"key": "V1001_GOOD"

}]

}]

}]

Descripción del parámetro

Parámetros

Requeridos

Explicación

El botón es una matriz de menú de primer nivel, el número debe ser 1~3

el sub_botón no tiene una matriz de menú de segundo nivel, el número debe ser 1 ~5

tipo es el tipo de operación de respuesta del menú. Actualmente hay dos tipos:

nombre es el título del menú, no más de 16 bytes, y el submenú no. más de 40 bytes

El tipo de clic en la clave debe ser un valor CLAVE de menú, utilizado para enviar mensajes a la interfaz, no más de 128 bytes

El tipo de vista de URL debe ser un enlace web, el usuario hace clic en el menú para abrir el enlace, no más de 256 bytes

Resultado devuelto

El paquete de datos JSON devuelto cuando es correcto es el siguiente:

{ "errcode": 0, "errmsg": "OK"}

El paquete de datos JSON devuelto cuando se produce un error es el siguiente (tomando como ejemplo la longitud del nombre del menú no válido):

{"errcode": 40018, "errmsg": "Tamaño de nombre de botón no válido" }

3. Menú de consulta

Uso de la interfaz Después de crear un menú personalizado, los desarrolladores También puede utilizar la interfaz para consultar la estructura del menú personalizado.

Descripción de la solicitud

/cgi-bin/menu/get?access_token=ACCESS_TOKEN

Descripción de la devolución

Corresponde a la interfaz creada, El resultado de retorno Json correcto es:

{"Menú": {"Botón": [{"Tipo": "Clic", "Nombre": "Canción de hoy", "clave": "V1001_TODAY_MUSIC" , "sub_button": []}, {"type": "clic", "name": "Información del cantante", "key": "V1001_TODAY_SINGER", "sub_button": []}, {"type": "clic ", "nombre": "perfil de cantante", "clave": "V1001_TODAY_SINGER", "sub_botón": []}, {"nombre": "menú", "sub_botón": [{"tipo":" ver" , "nombre": "búsqueda", "url": "/", "sub_button": []}, {"tipo": "ver", "nombre": "vídeo", "url": "/ ", "sub_button": []}, {"type": "click", "name": "Me gusta", "key": "V1001_GOOD", "sub_button": []}]}]}]}}

4. Eliminar menú

Después de usar la interfaz para crear un menú personalizado, los desarrolladores también pueden usar la interfaz para eliminar el menú personalizado utilizado actualmente.

Descripción de la solicitud

/cgi-bin/menu/delete?access_token=ACCESS_TOKEN

Descripción de la devolución

Corresponde a la interfaz de creación, El resultado de retorno Json correcto es:

{"errcode": 0, "errmsg"."ok"}

5 Procesamiento de eventos

El usuario hace clic. desde Después de definir el menú, si el botón de menú está configurado para tipo de clic, WeChat enviará eventos de clic al desarrollador. Tenga en cuenta que los clics en el menú del tipo de vista (saltar a URL) no se informarán.

Ejemplo de paquete Push XML:

lt;xmlgt;

lt;ToUserNamegt;lt;! [CDATA[toUser]]gt;lt;/ToUserNamegt;

lt;FromUserNamegt;lt;! [CDATA[FromUser]]gt;lt;/FromUserNamegt;

lt;CreateTimegt;123456789lt;/CreateTimegt;

lt;MsgTypegt;lt;! [CDATA[evento]]gt;lt;/MsgTypegt;

lt;eventgt;lt;! [CDATA[CLIC]]gt;lt;/Eventgt;

lt;EventKeygt;lt;! [CDATA[EVENTKEY]]gt;lt;/EventKeygt;

lt;/xmlgt;

Descripción del parámetro:

Parámetro

Descripción

ToUserName Desarrollador MicroSignal

FromUserName Cuenta del remitente (OpenID)

CreateTime Hora en que se creó el mensaje (entero)

MsgType Mensaje tipo, evento

Tipo de evento de evento, CLIC

Valor de CLAVE del evento EventKey, correspondiente al valor de CLAVE en la interfaz del menú personalizado

3. Sigamos con el artículo anterior. Tutorial de desarrollo de cuentas públicas de WeChat (3) Ejemplo de introducción: Robot (con código fuente)

Agregaremos una función de menú personalizada basada en el artículo anterior.

1. Obtenga access_token

Primero debe obtener AppId y AppSecret

Cuando se convierta en desarrollador, naturalmente podrá verlo en desarrollador. modo Estos dos valores se pueden restablecer.

Luego llame a la operación que se muestra en II.1.

Nota: access_token tiene un tiempo de vencimiento. Si caduca, debes obtenerlo nuevamente.

El código es el siguiente: /summarygt;

cadena estática privada mAccessToken;

/// lt; //

/// lt;/summarygt;

cadena estática pública AccessToken

{

get

{

//Si está vacío o caducado, es necesario volver a obtenerlo

if (string.IsNullOrEmpty(mAccessToken) || HasExpired())

{

//Obtener

mAccessToken = GetAccessToken(AppID, AppSecret

}

Devolver mAccessToken

<); p> }

}

}

/// lt; resumen gt; > // /lt;/summarygt;

/// lt;param name="appId"gt;lt;/paramgt;

/// lt;param name=" appSecret" gt;lt;/paramgt;

/// lt;returnsgt;lt;/returnsgt;

cadena estática privada GetAccessToken(cadena appId, cadena appSecret)

{

string url = string.Format("/cgi-bin/token?grant_type=client_credentialamp;appid={0}amp;secret={1}", appId, appSecret);

resultado de cadena = HttpUtility.GetData(url);

XDocument doc = XmlUtility.ParseJson(resultado, "root");

XElement raíz = doc.Root ;

/// Obtener menú

/// lt;/summarygt;

cadena estática pública GetMenu()

{

string url = string.Format("/cgi-bin/menu/get ?access_token={0}", Context.AccessToken);

return HttpUtility.GetData(url);

p>

}

/// lt; resumengt;

/// Crear menú

/// lt /summarygt; >

public static void CreateMenu(menú de cadena)

{

string url = string.Format("/cgi-

bin/menu/create?access_token={0}",Context.AccessToken);

//string menu = FileUtility.Read(Menu_Data_Path);

HttpUtility.Read(Menu_Data_Path) SendHttpRequest(url, menú);

}

/// lt; resumengt;

/// EliminarMenú

/// lt;/summarygt;

public static void DeleteMenu()

{

usando (WebResponse respuesta = request.GetResponse())

{

if (respuesta != null)

{

usando (Stream stream = respuesta.GetResponseStream())

{

usando (StreamReader Reader = new StreamReader( stream, Encoding.Ujson, string rootName)

{

return JsonConvert.DeserializeXNode(json, rootName);

}

}

}

}

}

5.

Configure el menú, necesita manejar eventos en este momento. En nuestro diseño anterior de ASPX o WinForm, los eventos del botón estaban vinculados aquí simplemente pasamos la solicitud a través de un mensaje XML. Menú de configuración" en el contenido del menú específico, ya sabemos qué eventos deben procesarse

Haga clic en los eventos que deben procesarse:

1) Me gusta

<. p >2) Consultar el clima de una determinada ciudad, Beijing, Shanghai, Wuhan

3) Ayuda

Esto también utiliza el controlador de eventos EventHandler en el capítulo anterior para expandir el procesamiento. /p>

El código de implementación específico es:

Usar sistema;

Usar

espacio de nombres Yank.WeiXin.

/// lt;param name="em"gt;lt;/paramgt;

/// lt;returnsgt;lt;/returnsgt;

cadena privada btnGoodClick(EventMessage em)

{

///Responder al mensaje de bienvenida

Te

/// Ayuda

/// lt; /summarygt;

/// lt; param nombre="em"gt; ; returngt;lt;/returnsgt;

cadena privada btnHelpClick(EventMessage em)

{

///Responder al mensaje de bienvenida

Mensaje de Texto tm = nuevo Mensaje de Texto();

tm. ToUserName = em.FromUserName

tm.FromUserName = em.ToUserName

tm.CreateTime = Common.CreateTime()

tm.CreateTime = Común; .CreateTime();

tm.CreateTime = Common.CreateTime()GenerateContent();

}

/// resumengt; >

/// Consulta el tiempo

///lt;/summarygt;

/// lt;param name="cityName"gt;lt;/paramgt;

/// lt; param nombre="em"gt; /paramgt;

/// lt; p>

cadena privada searchWeather(string cityName, EventMessage em)

{

}

}

6. Efecto

Finalmente hecho, echemos un vistazo al efecto de la imagen