
みなさんこんにちは。 準備されたレポートへのアクセスを提供することは、しばしば別の問題です。 管理のためのデータ処理結果への利便性と運用アクセスの問題が、それらのさらなる使用の運命を大きく左右します。
Tableauシステム(または単にスコアボード)は、このようなタスクではあまり人気がなく、多くのソースからのデータをすばやく分析したり、オンラインレポートをサーバーに公開したり、レポートのPDFバージョンの自動配信を構成したりすることができます。
ただし、すべてがセットアップされ、公開され、配布されたとしても、同僚は問題に直面します。
- 定期的な郵便報告は、仕事の手紙の流れで失われ、すぐに正しいものを見つけることが常に可能とは限りません。
- 原則として、レポートへのオンラインアクセスは企業VPNによって保護されています。 状況によっては、これは問題です。
- 通常、定期的な配布を待たずにレポートを受信する必要があります。 たとえば、現在の月のプロジェクトの計画事実は、いつでも必要になる場合があります。
- サーバー上のアカウントのパスワードが忘れられたり、他の100500フォルダーやレポートの中から目的のレポートを見つけることが困難な場合があります。
このような問題の解決策の1つは、ボタンをクリックするだけでスコアボードサーバーからPDFレポートをエクスポートしてユーザーに送信できるテレグラムボットです。 この記事では、このようなボットの最も単純なバージョンのコードと例を見ていきます。
次の簡略化から進みます。
- ボットのキーボードは、このユーザーに送信するレポートの名前で構成されています。 現在のバージョンのサブメニューの存在は暗示されていません。
- ボットは、すべてのメッセージを互いに独立して処理します。つまり、ユーザーの以前のメッセージを「記憶」しません。
- レポートへのアクセスの有無は、ボットで作業を開始するときに(STARTボタンを押して)各ユーザーに割り当てられたchat_idパラメーターによって決まります。
- ボットには1人の管理者がいて、レポートにアクセスするためのアプリケーションを受け取ります。
この記事では、Amazon Web Services仮想マシンにインストールされているTableau Server 10.1.3のバージョンを使用しました:Windows Server 2016 64ビット、RAM 16GB(はい、ScoreboardサーバーはWindows Serverでのみ動作します)。 エクスポートされたレポートの例は、スコアボードサーバーと共にデフォルトでインストールされるTableauサンプルプロジェクトから取得されました。 たとえば、これ:

Telegramでボットを作成する方法の優れた例はたくさんありますが、
ドキュメントを使用するだけです。 Telegram APIを使用するには、既製の
Pythonライブラリを使用し
ます 。
Python 2.7 Anacondaを使用します。
B-セキュリティTelegramを使用すると、企業サーバーから外部のどこかにレポートを送信できます。 したがって、誰もが自分に割り当てられたレポートのみを受信できるように、アクセスレジストリを維持する必要があります。 また、スクリプトを再起動せずにユーザー/権限を追加する必要があります。 ボットで作業を開始するときにユーザーのchat_idを見つけ、すぐに必要なアクセス権を与えます。
ユーザーがボットの操作を開始したら、chat_idを確認する必要があります。 これを行うには、/ startコマンドハンドラー(コードのstart関数)で、chat_idをボットの管理者に送信します。ボットの管理者は、このユーザーのレポート(つまり、chat_id)でキーボードを作成できます。
STARTボタンが押されると、ユーザーIvan Ivanovは次のメッセージを受け取ります。
こんにちは、現在、レポートにはアクセスできません。 申し込みが承認されました。近い将来アクセスが許可されます。
ボット管理者は次のメッセージを受け取ります:
アクセスの申請iivanov Ivan Ivanov 123456789
このような手順のために、YAMLファイルを作成します。このファイルでは、各ユーザーのユーザーセクションで、必要なレポートを含む「キーボード」を作成します。 この形式は、スクリプトで読み取り、キーボードの形でTelegramに送信するのが非常に簡単です。
ユーザーアクセス構成ファイルusers: 123456789: keyboard: -
この実施形態では、キーボードは2つの行を含む:

このようなキーボードエントリをテレグラム形式に変換することは、特別な機能になります。
Telegramのキーボード形成 def makeCustomKeyboard( userKeyboard ): """ . keyboard privacy.yaml. """ custom_keyboard = map( lambda z: [ telegram.KeyboardButton(x['buttonText']) for x in z ], userKeyboard ) return telegram.ReplyKeyboardMarkup(custom_keyboard, resize_keyboard='True')
スクリプトコード内の構成ファイルのアドレスは、変数CONFIG_FILEによって設定されます。 ボットの操作中にこれらのパラメーターを更新するには、updateSettings()関数を使用します。
/ startコマンドとメッセージの処理機能は、毎回アクセスレジストリを更新します。
def updateSettings(): """ """ return load( file( CONFIG_FILE ) )
Scoreboardサーバーを操作するためのアクセスファイルに加えて、次のパラメーターが必要です。
すべての準備が整ったら、/ startコマンドの処理機能を定義できます。 また、ログ機能は便利です。ボットを使用したアクションのユーザーのchat_idをテキストファイルに書き込むだけです。 エラーが発生した場合のこのような単純なオプションにより、エラーが発生した行がわかります。
コマンド処理/開始 def start(bot, update): """ /start . ( privacy.yaml, users). , . """
わかりました、レポートを利用できるキーボードをユーザーに送信しました。 このバージョンでは、着信メッセージを、このchat_idのprivacy.yamlアクセスファイル内のレポート名と比較する必要があります。 受信したメッセージがレポートの1つと一致する場合、このレポートをエクスポートするコマンドをScoreboardサーバーに送信します。 そして、生成されたレポートをユーザーに送信します。
サーバーからレポートをPDF形式でエクスポートするコマンドは、コマンドラインから「get」または「export」を使用して送信できます(ドキュメントへの
リンク )。
これを行うには、最初にスコアボードサーバーとのセッションを開きます(localhost、adminおよびadminPasswordの代わりに、スコアボードサーバードメイン、ユーザー名、およびパスワードを指定します)。
「重い」レポートをエクスポートする前に、ユーザーに警告しておくと便利です。
bot.sendMessage(chat_id=chat_id, text=' , ...', reply_markup=reply_markup) executeFile = os.path.join( tabcmdLocation, 'tabcmd.exe' ) subprocess.call([ executeFile, 'login', '-s', 'localhost', '-u', 'admin', '-p', 'adminPassword '])
レポートをディスク上のフォルダーにエクスポートします
subprocess.call([ executeFile, 'get', reportAddress, '-f', reportsLocation + reportName + '.pdf'])
サーバー上のセッションを閉じます
subprocess.call([ executeFile, 'logout'])
生成されたレポートをユーザーに送信するだけです
bot.send_document(chat_id=chat_id, document=open(reportsLocation + reportName.encode('utf-8') + '.pdf', 'rb'))
仕組みを確認しましょう。

サーバーからエクスポートされたPDFレポート:

それだけです。このアプローチがレポートへのアクセスを簡素化し、作業効率を向上させることを願っています。 コードのフルバージョン:
構成ファイル users: 123456789: keyboard: -