aispeech.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package aispeech
  2. import (
  3. stdcontext "context"
  4. "github.com/silenceper/wechat/v2/aispeech/config"
  5. "github.com/silenceper/wechat/v2/aispeech/context"
  6. "github.com/silenceper/wechat/v2/aispeech/dialog"
  7. "github.com/silenceper/wechat/v2/credential"
  8. )
  9. // AISpeech 微信智能对话相关 API.
  10. type AISpeech struct {
  11. ctx *context.Context
  12. dialog *dialog.Dialog
  13. }
  14. // NewAISpeech 实例化智能对话 API.
  15. func NewAISpeech(cfg *config.Config) *AISpeech {
  16. ctx := &context.Context{
  17. Config: cfg,
  18. AccessTokenContextHandle: dialog.NewAccessToken(cfg),
  19. }
  20. return &AISpeech{ctx: ctx}
  21. }
  22. // GetContext get Context.
  23. func (a *AISpeech) GetContext() *context.Context {
  24. return a.ctx
  25. }
  26. // SetAccessTokenHandle 自定义 access_token 获取方式.
  27. func (a *AISpeech) SetAccessTokenHandle(accessTokenHandle credential.AccessTokenHandle) {
  28. a.ctx.AccessTokenContextHandle = credential.AccessTokenCompatibleHandle{
  29. AccessTokenHandle: accessTokenHandle,
  30. }
  31. }
  32. // SetAccessTokenContextHandle 自定义 access_token 获取方式.
  33. func (a *AISpeech) SetAccessTokenContextHandle(accessTokenContextHandle credential.AccessTokenContextHandle) {
  34. a.ctx.AccessTokenContextHandle = accessTokenContextHandle
  35. }
  36. // GetAccessToken 获取 access token.
  37. func (a *AISpeech) GetAccessToken() (string, error) {
  38. return a.ctx.GetAccessToken()
  39. }
  40. // GetAccessTokenContext 获取 access token.
  41. func (a *AISpeech) GetAccessTokenContext(ctx stdcontext.Context) (string, error) {
  42. return a.ctx.GetAccessTokenContext(ctx)
  43. }
  44. // GetDialog 获取对话平台 API.
  45. func (a *AISpeech) GetDialog() *dialog.Dialog {
  46. if a.dialog == nil {
  47. a.dialog = dialog.NewDialog(a.ctx)
  48. }
  49. return a.dialog
  50. }